package sphynx.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import sphynx.services.DeslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalDeslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_BASH_COMMENT", "RULE_ID", "RULE_STRING", "RULE_VERBATIM_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'program'", "';'", "'reference'", "'pattern'", "':'", "'('", "','", "')'", "'exception'", "'const'", "'='", "'shell'", "'options'", "'stdout'", "'stderr'", "'log'", "'error'", "'warning'", "'info'", "'logconfig'", "'{'", "'}'", "'continue'", "'break'", "'return'", "'var'", "'optional'", "'locate'", "'for'", "'option'", "'using'", "'match'", "'arguments'", "'minOccur'", "'maxOccur'", "'returnLastOccurrenceOnly'", "'input'", "'position'", "'globalPosition'", "'updateParentPosition'", "'closeInputOnFinish'", "'stopOnError'", "'if'", "'else'", "'foreach'", "'in'", "'while'", "'struct'", "'?'", "'evaluate'", "'statement'", "'&&'", "'||'", "'>'", "'<'", "'<='", "'>='", "'=='", "'!='", "'+'", "'-'", "'|'", "'&'", "'*'", "'/'", "'%'", "'<<'", "'>>'", "'!'", "'??'", "'^'", "'.'", "'['", "']'", "'@'", "'new'", "'job'", "'nameresolver'", "'ref'", "'null'", "'object'", "'date'", "'formatdate'", "'execute'", "'this'", "'begin'", "'end'", "'matchinfo'", "'class'", "'factory'", "'locator'", "'type'", "'::'", "'true'", "'false'"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=12;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_BASH_COMMENT=4;
    public static final int T__99=99;
    public static final int T__98=98;
    public static final int T__97=97;
    public static final int T__96=96;
    public static final int T__95=95;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__89=89;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=9;
    public static final int RULE_STRING=6;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int T__78=78;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int RULE_VERBATIM_STRING=7;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int T__107=107;
    public static final int T__103=103;
    public static final int T__59=59;
    public static final int T__104=104;
    public static final int T__105=105;
    public static final int T__106=106;
    public static final int RULE_INT=8;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__102=102;
    public static final int T__101=101;
    public static final int T__100=100;
    public static final int RULE_SL_COMMENT=10;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=11;

    // delegates
    // delegators


        public InternalDeslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalDeslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalDeslParser.tokenNames; }
    public String getGrammarFileName() { return "../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g"; }



     	private DeslGrammarAccess grammarAccess;
     	
        public InternalDeslParser(TokenStream input, DeslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Program";	
       	}
       	
       	@Override
       	protected DeslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleProgram"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:67:1: entryRuleProgram returns [EObject current=null] : iv_ruleProgram= ruleProgram EOF ;
    public final EObject entryRuleProgram() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProgram = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:68:2: (iv_ruleProgram= ruleProgram EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:69:2: iv_ruleProgram= ruleProgram EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getProgramRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProgram_in_entryRuleProgram75);
            iv_ruleProgram=ruleProgram();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProgram; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProgram85); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProgram"


    // $ANTLR start "ruleProgram"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:76:1: ruleProgram returns [EObject current=null] : ( (this_BASH_COMMENT_0= RULE_BASH_COMMENT )? otherlv_1= 'program' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )* ( (lv_children_6_0= ruleDeclaration ) )* ) ;
    public final EObject ruleProgram() throws RecognitionException {
        EObject current = null;

        Token this_BASH_COMMENT_0=null;
        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_children_4_0 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:79:28: ( ( (this_BASH_COMMENT_0= RULE_BASH_COMMENT )? otherlv_1= 'program' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )* ( (lv_children_6_0= ruleDeclaration ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:80:1: ( (this_BASH_COMMENT_0= RULE_BASH_COMMENT )? otherlv_1= 'program' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )* ( (lv_children_6_0= ruleDeclaration ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:80:1: ( (this_BASH_COMMENT_0= RULE_BASH_COMMENT )? otherlv_1= 'program' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )* ( (lv_children_6_0= ruleDeclaration ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:80:2: (this_BASH_COMMENT_0= RULE_BASH_COMMENT )? otherlv_1= 'program' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= ';' ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )* ( (lv_children_6_0= ruleDeclaration ) )*
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:80:2: (this_BASH_COMMENT_0= RULE_BASH_COMMENT )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==RULE_BASH_COMMENT) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:80:3: this_BASH_COMMENT_0= RULE_BASH_COMMENT
                    {
                    this_BASH_COMMENT_0=(Token)match(input,RULE_BASH_COMMENT,FollowSets000.FOLLOW_RULE_BASH_COMMENT_in_ruleProgram122); if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                          newLeafNode(this_BASH_COMMENT_0, grammarAccess.getProgramAccess().getBASH_COMMENTTerminalRuleCall_0()); 
                          
                    }

                    }
                    break;

            }

            otherlv_1=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleProgram135); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getProgramAccess().getProgramKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:88:1: ( (lv_name_2_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:89:1: (lv_name_2_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:89:1: (lv_name_2_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:90:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleProgram152); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_2_0, grammarAccess.getProgramAccess().getNameIDTerminalRuleCall_2_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getProgramRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_2_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleProgram169); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getProgramAccess().getSemicolonKeyword_3());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:110:1: ( ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';' )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==15) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:110:2: ( (lv_children_4_0= ruleImportStatement ) ) otherlv_5= ';'
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:110:2: ( (lv_children_4_0= ruleImportStatement ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:111:1: (lv_children_4_0= ruleImportStatement )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:111:1: (lv_children_4_0= ruleImportStatement )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:112:3: lv_children_4_0= ruleImportStatement
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getProgramAccess().getChildrenImportStatementParserRuleCall_4_0_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleImportStatement_in_ruleProgram191);
            	    lv_children_4_0=ruleImportStatement();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_4_0, 
            	              		"ImportStatement");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_5=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleProgram203); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_5, grammarAccess.getProgramAccess().getSemicolonKeyword_4_1());
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:132:3: ( (lv_children_6_0= ruleDeclaration ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==16||LA3_0==22||LA3_0==100||(LA3_0>=103 && LA3_0<=104)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:133:1: (lv_children_6_0= ruleDeclaration )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:133:1: (lv_children_6_0= ruleDeclaration )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:134:3: lv_children_6_0= ruleDeclaration
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getProgramAccess().getChildrenDeclarationParserRuleCall_5_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleDeclaration_in_ruleProgram226);
            	    lv_children_6_0=ruleDeclaration();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getProgramRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_6_0, 
            	              		"Declaration");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProgram"


    // $ANTLR start "entryRuleDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:158:1: entryRuleDeclaration returns [EObject current=null] : iv_ruleDeclaration= ruleDeclaration EOF ;
    public final EObject entryRuleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeclaration = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:159:2: (iv_ruleDeclaration= ruleDeclaration EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:160:2: iv_ruleDeclaration= ruleDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDeclaration_in_entryRuleDeclaration263);
            iv_ruleDeclaration=ruleDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDeclaration273); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDeclaration"


    // $ANTLR start "ruleDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:167:1: ruleDeclaration returns [EObject current=null] : (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration ) ;
    public final EObject ruleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject this_PatternDeclaration_0 = null;

        EObject this_Proxies_1 = null;

        EObject this_ConstantDeclaration_2 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:170:28: ( (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:171:1: (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:171:1: (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 16:
                {
                alt4=1;
                }
                break;
            case 100:
            case 103:
            case 104:
                {
                alt4=2;
                }
                break;
            case 22:
                {
                alt4=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:172:5: this_PatternDeclaration_0= rulePatternDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getDeclarationAccess().getPatternDeclarationParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_ruleDeclaration320);
                    this_PatternDeclaration_0=rulePatternDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PatternDeclaration_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:182:5: this_Proxies_1= ruleProxies
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getDeclarationAccess().getProxiesParserRuleCall_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxies_in_ruleDeclaration347);
                    this_Proxies_1=ruleProxies();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Proxies_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:192:5: this_ConstantDeclaration_2= ruleConstantDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getDeclarationAccess().getConstantDeclarationParserRuleCall_2()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleConstantDeclaration_in_ruleDeclaration374);
                    this_ConstantDeclaration_2=ruleConstantDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ConstantDeclaration_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDeclaration"


    // $ANTLR start "entryRuleProxies"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:208:1: entryRuleProxies returns [EObject current=null] : iv_ruleProxies= ruleProxies EOF ;
    public final EObject entryRuleProxies() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProxies = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:209:2: (iv_ruleProxies= ruleProxies EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:210:2: iv_ruleProxies= ruleProxies EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getProxiesRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProxies_in_entryRuleProxies409);
            iv_ruleProxies=ruleProxies();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProxies; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProxies419); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProxies"


    // $ANTLR start "ruleProxies"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:217:1: ruleProxies returns [EObject current=null] : (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy ) ;
    public final EObject ruleProxies() throws RecognitionException {
        EObject current = null;

        EObject this_PatternMatchInfoProxy_0 = null;

        EObject this_LocatorProxy_1 = null;

        EObject this_TypeProxy_2 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:220:28: ( (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:221:1: (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:221:1: (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy )
            int alt5=3;
            switch ( input.LA(1) ) {
            case 100:
                {
                alt5=1;
                }
                break;
            case 103:
                {
                alt5=2;
                }
                break;
            case 104:
                {
                alt5=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:222:5: this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getProxiesAccess().getPatternMatchInfoProxyParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternMatchInfoProxy_in_ruleProxies466);
                    this_PatternMatchInfoProxy_0=rulePatternMatchInfoProxy();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PatternMatchInfoProxy_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:232:5: this_LocatorProxy_1= ruleLocatorProxy
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getProxiesAccess().getLocatorProxyParserRuleCall_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLocatorProxy_in_ruleProxies493);
                    this_LocatorProxy_1=ruleLocatorProxy();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LocatorProxy_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:242:5: this_TypeProxy_2= ruleTypeProxy
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getProxiesAccess().getTypeProxyParserRuleCall_2()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleTypeProxy_in_ruleProxies520);
                    this_TypeProxy_2=ruleTypeProxy();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TypeProxy_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProxies"


    // $ANTLR start "entryRuleImportStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:258:1: entryRuleImportStatement returns [EObject current=null] : iv_ruleImportStatement= ruleImportStatement EOF ;
    public final EObject entryRuleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:259:2: (iv_ruleImportStatement= ruleImportStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:260:2: iv_ruleImportStatement= ruleImportStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleImportStatement_in_entryRuleImportStatement555);
            iv_ruleImportStatement=ruleImportStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImportStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImportStatement565); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImportStatement"


    // $ANTLR start "ruleImportStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:267:1: ruleImportStatement returns [EObject current=null] : this_InclusionDeclaration_0= ruleInclusionDeclaration ;
    public final EObject ruleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject this_InclusionDeclaration_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:270:28: (this_InclusionDeclaration_0= ruleInclusionDeclaration )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:272:5: this_InclusionDeclaration_0= ruleInclusionDeclaration
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getImportStatementAccess().getInclusionDeclarationParserRuleCall()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleInclusionDeclaration_in_ruleImportStatement611);
            this_InclusionDeclaration_0=ruleInclusionDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_InclusionDeclaration_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImportStatement"


    // $ANTLR start "entryRuleInclusionDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:288:1: entryRuleInclusionDeclaration returns [EObject current=null] : iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF ;
    public final EObject entryRuleInclusionDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInclusionDeclaration = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:289:2: (iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:290:2: iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getInclusionDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleInclusionDeclaration_in_entryRuleInclusionDeclaration645);
            iv_ruleInclusionDeclaration=ruleInclusionDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleInclusionDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInclusionDeclaration655); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInclusionDeclaration"


    // $ANTLR start "ruleInclusionDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:297:1: ruleInclusionDeclaration returns [EObject current=null] : (otherlv_0= 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleInclusionDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:300:28: ( (otherlv_0= 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:301:1: (otherlv_0= 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:301:1: (otherlv_0= 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:301:3: otherlv_0= 'reference' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleInclusionDeclaration692); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getInclusionDeclarationAccess().getReferenceKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:305:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:306:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:306:1: (lv_importURI_1_0= RULE_STRING )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:307:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleInclusionDeclaration709); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_importURI_1_0, grammarAccess.getInclusionDeclarationAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getInclusionDeclarationRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"importURI",
                      		lv_importURI_1_0, 
                      		"STRING");
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInclusionDeclaration"


    // $ANTLR start "entryRulePatternDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:331:1: entryRulePatternDeclaration returns [EObject current=null] : iv_rulePatternDeclaration= rulePatternDeclaration EOF ;
    public final EObject entryRulePatternDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternDeclaration = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:332:2: (iv_rulePatternDeclaration= rulePatternDeclaration EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:333:2: iv_rulePatternDeclaration= rulePatternDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPatternDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_entryRulePatternDeclaration750);
            iv_rulePatternDeclaration=rulePatternDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePatternDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternDeclaration760); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePatternDeclaration"


    // $ANTLR start "rulePatternDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:340:1: rulePatternDeclaration returns [EObject current=null] : (otherlv_0= 'pattern' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( ( ruleQualifiedID ) ) )? otherlv_4= '(' ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? otherlv_8= ')' ( (lv_children_9_0= ruleCompositeStatement ) ) (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )? ) ;
    public final EObject rulePatternDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_arguments_5_0 = null;

        EObject lv_arguments_7_0 = null;

        EObject lv_children_9_0 = null;

        EObject lv_children_11_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:343:28: ( (otherlv_0= 'pattern' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( ( ruleQualifiedID ) ) )? otherlv_4= '(' ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? otherlv_8= ')' ( (lv_children_9_0= ruleCompositeStatement ) ) (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:344:1: (otherlv_0= 'pattern' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( ( ruleQualifiedID ) ) )? otherlv_4= '(' ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? otherlv_8= ')' ( (lv_children_9_0= ruleCompositeStatement ) ) (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:344:1: (otherlv_0= 'pattern' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( ( ruleQualifiedID ) ) )? otherlv_4= '(' ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? otherlv_8= ')' ( (lv_children_9_0= ruleCompositeStatement ) ) (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:344:3: otherlv_0= 'pattern' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= ':' ( ( ruleQualifiedID ) ) )? otherlv_4= '(' ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? otherlv_8= ')' ( (lv_children_9_0= ruleCompositeStatement ) ) (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )?
            {
            otherlv_0=(Token)match(input,16,FollowSets000.FOLLOW_16_in_rulePatternDeclaration797); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPatternDeclarationAccess().getPatternKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:348:1: ( (lv_name_1_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:349:1: (lv_name_1_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:349:1: (lv_name_1_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:350:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rulePatternDeclaration814); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getPatternDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getPatternDeclarationRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:366:2: (otherlv_2= ':' ( ( ruleQualifiedID ) ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==17) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:366:4: otherlv_2= ':' ( ( ruleQualifiedID ) )
                    {
                    otherlv_2=(Token)match(input,17,FollowSets000.FOLLOW_17_in_rulePatternDeclaration832); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getPatternDeclarationAccess().getColonKeyword_2_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:370:1: ( ( ruleQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:371:1: ( ruleQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:371:1: ( ruleQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:372:3: ruleQualifiedID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getPatternDeclarationRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternDeclarationAccess().getReturnTypePatternMatchInfoCrossReference_2_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_rulePatternDeclaration855);
                    ruleQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,18,FollowSets000.FOLLOW_18_in_rulePatternDeclaration869); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getPatternDeclarationAccess().getLeftParenthesisKeyword_3());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:389:1: ( ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( ((LA8_0>=RULE_ID && LA8_0<=RULE_INT)||LA8_0==18||LA8_0==33||(LA8_0>=44 && LA8_0<=45)||LA8_0==60||LA8_0==63||LA8_0==81||(LA8_0>=87 && LA8_0<=99)||(LA8_0>=106 && LA8_0<=107)) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:389:2: ( (lv_arguments_5_0= ruleArgument ) ) (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:389:2: ( (lv_arguments_5_0= ruleArgument ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:390:1: (lv_arguments_5_0= ruleArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:390:1: (lv_arguments_5_0= ruleArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:391:3: lv_arguments_5_0= ruleArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternDeclarationAccess().getArgumentsArgumentParserRuleCall_4_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_rulePatternDeclaration891);
                    lv_arguments_5_0=ruleArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"arguments",
                              		lv_arguments_5_0, 
                              		"Argument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:407:2: (otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) ) )*
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( (LA7_0==19) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:407:4: otherlv_6= ',' ( (lv_arguments_7_0= ruleArgument ) )
                    	    {
                    	    otherlv_6=(Token)match(input,19,FollowSets000.FOLLOW_19_in_rulePatternDeclaration904); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_6, grammarAccess.getPatternDeclarationAccess().getCommaKeyword_4_1_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:411:1: ( (lv_arguments_7_0= ruleArgument ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:412:1: (lv_arguments_7_0= ruleArgument )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:412:1: (lv_arguments_7_0= ruleArgument )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:413:3: lv_arguments_7_0= ruleArgument
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getPatternDeclarationAccess().getArgumentsArgumentParserRuleCall_4_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_rulePatternDeclaration925);
                    	    lv_arguments_7_0=ruleArgument();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getPatternDeclarationRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"arguments",
                    	              		lv_arguments_7_0, 
                    	              		"Argument");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop7;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_8=(Token)match(input,20,FollowSets000.FOLLOW_20_in_rulePatternDeclaration941); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getPatternDeclarationAccess().getRightParenthesisKeyword_5());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:433:1: ( (lv_children_9_0= ruleCompositeStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:434:1: (lv_children_9_0= ruleCompositeStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:434:1: (lv_children_9_0= ruleCompositeStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:435:3: lv_children_9_0= ruleCompositeStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPatternDeclarationAccess().getChildrenCompositeStatementParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration962);
            lv_children_9_0=ruleCompositeStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPatternDeclarationRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_9_0, 
                      		"CompositeStatement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:451:2: (otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==21) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:451:4: otherlv_10= 'exception' ( (lv_children_11_0= ruleCompositeStatement ) )
                    {
                    otherlv_10=(Token)match(input,21,FollowSets000.FOLLOW_21_in_rulePatternDeclaration975); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_10, grammarAccess.getPatternDeclarationAccess().getExceptionKeyword_7_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:455:1: ( (lv_children_11_0= ruleCompositeStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:456:1: (lv_children_11_0= ruleCompositeStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:456:1: (lv_children_11_0= ruleCompositeStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:457:3: lv_children_11_0= ruleCompositeStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternDeclarationAccess().getChildrenCompositeStatementParserRuleCall_7_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration996);
                    lv_children_11_0=ruleCompositeStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternDeclarationRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_11_0, 
                              		"CompositeStatement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePatternDeclaration"


    // $ANTLR start "entryRuleConstantDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:481:1: entryRuleConstantDeclaration returns [EObject current=null] : iv_ruleConstantDeclaration= ruleConstantDeclaration EOF ;
    public final EObject entryRuleConstantDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstantDeclaration = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:482:2: (iv_ruleConstantDeclaration= ruleConstantDeclaration EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:483:2: iv_ruleConstantDeclaration= ruleConstantDeclaration EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConstantDeclarationRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleConstantDeclaration_in_entryRuleConstantDeclaration1034);
            iv_ruleConstantDeclaration=ruleConstantDeclaration();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConstantDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantDeclaration1044); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstantDeclaration"


    // $ANTLR start "ruleConstantDeclaration"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:490:1: ruleConstantDeclaration returns [EObject current=null] : (otherlv_0= 'const' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleExpression ) ) otherlv_4= ';' ) ;
    public final EObject ruleConstantDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:493:28: ( (otherlv_0= 'const' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleExpression ) ) otherlv_4= ';' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:494:1: (otherlv_0= 'const' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleExpression ) ) otherlv_4= ';' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:494:1: (otherlv_0= 'const' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleExpression ) ) otherlv_4= ';' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:494:3: otherlv_0= 'const' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleExpression ) ) otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleConstantDeclaration1081); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getConstantDeclarationAccess().getConstKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:498:1: ( (lv_name_1_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:499:1: (lv_name_1_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:499:1: (lv_name_1_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:500:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleConstantDeclaration1098); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getConstantDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getConstantDeclarationRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleConstantDeclaration1115); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getConstantDeclarationAccess().getEqualsSignKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:520:1: ( (lv_value_3_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:521:1: (lv_value_3_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:521:1: (lv_value_3_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:522:3: lv_value_3_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getConstantDeclarationAccess().getValueExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleConstantDeclaration1136);
            lv_value_3_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getConstantDeclarationRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleConstantDeclaration1148); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getConstantDeclarationAccess().getSemicolonKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstantDeclaration"


    // $ANTLR start "entryRuleStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:550:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:551:2: (iv_ruleStatement= ruleStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:552:2: iv_ruleStatement= ruleStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_entryRuleStatement1184);
            iv_ruleStatement=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStatement1194); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatement"


    // $ANTLR start "ruleStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:559:1: ruleStatement returns [EObject current=null] : (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' ) | (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' ) | this_LoopStatement_8= ruleLoopStatement | this_EmptyStatement_9= ruleEmptyStatement | (this_LogStatement_10= ruleLogStatement otherlv_11= ';' ) | this_LogConfigStatement_12= ruleLogConfigStatement | (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' ) ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_11=null;
        Token otherlv_14=null;
        EObject this_CompositeStatement_0 = null;

        EObject this_DeclarationStatement_1 = null;

        EObject this_LocateStatement_3 = null;

        EObject this_IfStatement_5 = null;

        EObject this_SimpleExpression_6 = null;

        EObject this_LoopStatement_8 = null;

        EObject this_EmptyStatement_9 = null;

        EObject this_LogStatement_10 = null;

        EObject this_LogConfigStatement_12 = null;

        EObject this_ExecStatement_13 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:562:28: ( (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' ) | (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' ) | this_LoopStatement_8= ruleLoopStatement | this_EmptyStatement_9= ruleEmptyStatement | (this_LogStatement_10= ruleLogStatement otherlv_11= ';' ) | this_LogConfigStatement_12= ruleLogConfigStatement | (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:563:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' ) | (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' ) | this_LoopStatement_8= ruleLoopStatement | this_EmptyStatement_9= ruleEmptyStatement | (this_LogStatement_10= ruleLogStatement otherlv_11= ';' ) | this_LogConfigStatement_12= ruleLogConfigStatement | (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:563:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' ) | (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' ) | this_LoopStatement_8= ruleLoopStatement | this_EmptyStatement_9= ruleEmptyStatement | (this_LogStatement_10= ruleLogStatement otherlv_11= ';' ) | this_LogConfigStatement_12= ruleLogConfigStatement | (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' ) )
            int alt10=10;
            alt10 = dfa10.predict(input);
            switch (alt10) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:564:5: this_CompositeStatement_0= ruleCompositeStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getCompositeStatementParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_ruleStatement1241);
                    this_CompositeStatement_0=ruleCompositeStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CompositeStatement_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:573:6: (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:573:6: (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:574:5: this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';'
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getDeclarationStatementParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleStatement1269);
                    this_DeclarationStatement_1=ruleDeclarationStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DeclarationStatement_1; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_2=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleStatement1280); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getStatementAccess().getSemicolonKeyword_1_1());
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:587:6: (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:587:6: (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:588:5: this_LocateStatement_3= ruleLocateStatement otherlv_4= ';'
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getLocateStatementParserRuleCall_2_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLocateStatement_in_ruleStatement1310);
                    this_LocateStatement_3=ruleLocateStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LocateStatement_3; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_4=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleStatement1321); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getStatementAccess().getSemicolonKeyword_2_1());
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:602:5: this_IfStatement_5= ruleIfStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getIfStatementParserRuleCall_3()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleIfStatement_in_ruleStatement1350);
                    this_IfStatement_5=ruleIfStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IfStatement_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:611:6: (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:611:6: (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:612:5: this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';'
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getSimpleExpressionParserRuleCall_4_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_ruleStatement1378);
                    this_SimpleExpression_6=ruleSimpleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SimpleExpression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_7=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleStatement1389); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getStatementAccess().getSemicolonKeyword_4_1());
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:626:5: this_LoopStatement_8= ruleLoopStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getLoopStatementParserRuleCall_5()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLoopStatement_in_ruleStatement1418);
                    this_LoopStatement_8=ruleLoopStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LoopStatement_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:636:5: this_EmptyStatement_9= ruleEmptyStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getEmptyStatementParserRuleCall_6()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleStatement1445);
                    this_EmptyStatement_9=ruleEmptyStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EmptyStatement_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:645:6: (this_LogStatement_10= ruleLogStatement otherlv_11= ';' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:645:6: (this_LogStatement_10= ruleLogStatement otherlv_11= ';' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:646:5: this_LogStatement_10= ruleLogStatement otherlv_11= ';'
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getLogStatementParserRuleCall_7_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLogStatement_in_ruleStatement1473);
                    this_LogStatement_10=ruleLogStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LogStatement_10; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_11=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleStatement1484); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_11, grammarAccess.getStatementAccess().getSemicolonKeyword_7_1());
                          
                    }

                    }


                    }
                    break;
                case 9 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:660:5: this_LogConfigStatement_12= ruleLogConfigStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getLogConfigStatementParserRuleCall_8()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLogConfigStatement_in_ruleStatement1513);
                    this_LogConfigStatement_12=ruleLogConfigStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LogConfigStatement_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:669:6: (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:669:6: (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:670:5: this_ExecStatement_13= ruleExecStatement otherlv_14= ';'
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getStatementAccess().getExecStatementParserRuleCall_9_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExecStatement_in_ruleStatement1541);
                    this_ExecStatement_13=ruleExecStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ExecStatement_13; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_14=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleStatement1552); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_14, grammarAccess.getStatementAccess().getSemicolonKeyword_9_1());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleExecStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:690:1: entryRuleExecStatement returns [EObject current=null] : iv_ruleExecStatement= ruleExecStatement EOF ;
    public final EObject entryRuleExecStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExecStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:691:2: (iv_ruleExecStatement= ruleExecStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:692:2: iv_ruleExecStatement= ruleExecStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExecStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleExecStatement_in_entryRuleExecStatement1589);
            iv_ruleExecStatement=ruleExecStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExecStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExecStatement1599); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExecStatement"


    // $ANTLR start "ruleExecStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:699:1: ruleExecStatement returns [EObject current=null] : ( ( (lv_operator_0_0= 'shell' ) ) ( (lv_children_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )* ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )? ) ;
    public final EObject ruleExecStatement() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_children_1_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:702:28: ( ( ( (lv_operator_0_0= 'shell' ) ) ( (lv_children_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )* ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:703:1: ( ( (lv_operator_0_0= 'shell' ) ) ( (lv_children_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )* ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:703:1: ( ( (lv_operator_0_0= 'shell' ) ) ( (lv_children_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )* ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:703:2: ( (lv_operator_0_0= 'shell' ) ) ( (lv_children_1_0= ruleExpression ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )* ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )?
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:703:2: ( (lv_operator_0_0= 'shell' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:704:1: (lv_operator_0_0= 'shell' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:704:1: (lv_operator_0_0= 'shell' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:705:3: lv_operator_0_0= 'shell'
            {
            lv_operator_0_0=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleExecStatement1642); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_0_0, grammarAccess.getExecStatementAccess().getOperatorShellKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getExecStatementRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_0_0, "shell");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:718:2: ( (lv_children_1_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:719:1: (lv_children_1_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:719:1: (lv_children_1_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:720:3: lv_children_1_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExecStatementAccess().getChildrenExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExecStatement1676);
            lv_children_1_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExecStatementRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_1_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:736:2: (otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) ) )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==19) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:736:4: otherlv_2= ',' ( (lv_children_3_0= ruleExpression ) )
            	    {
            	    otherlv_2=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleExecStatement1689); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getExecStatementAccess().getCommaKeyword_2_0());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:740:1: ( (lv_children_3_0= ruleExpression ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:741:1: (lv_children_3_0= ruleExpression )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:741:1: (lv_children_3_0= ruleExpression )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:742:3: lv_children_3_0= ruleExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getExecStatementAccess().getChildrenExpressionParserRuleCall_2_1_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExecStatement1710);
            	    lv_children_3_0=ruleExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getExecStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"Expression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:4: ( ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )* )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==25) && (synpred1_InternalDesl())) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:5: ( ( 'options' )=>otherlv_4= 'options' ) ( (lv_children_5_0= ruleExecStatementOption ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:5: ( ( 'options' )=>otherlv_4= 'options' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:6: ( 'options' )=>otherlv_4= 'options'
                    {
                    otherlv_4=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleExecStatement1733); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getExecStatementAccess().getOptionsKeyword_3_0());
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:763:2: ( (lv_children_5_0= ruleExecStatementOption ) )*
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( (LA12_0==RULE_ID||(LA12_0>=26 && LA12_0<=27)) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:764:1: (lv_children_5_0= ruleExecStatementOption )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:764:1: (lv_children_5_0= ruleExecStatementOption )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:765:3: lv_children_5_0= ruleExecStatementOption
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getExecStatementAccess().getChildrenExecStatementOptionParserRuleCall_3_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleExecStatementOption_in_ruleExecStatement1755);
                    	    lv_children_5_0=ruleExecStatementOption();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getExecStatementRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_5_0, 
                    	              		"ExecStatementOption");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop12;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExecStatement"


    // $ANTLR start "entryRuleExecStatementOption"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:789:1: entryRuleExecStatementOption returns [EObject current=null] : iv_ruleExecStatementOption= ruleExecStatementOption EOF ;
    public final EObject entryRuleExecStatementOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExecStatementOption = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:790:2: (iv_ruleExecStatementOption= ruleExecStatementOption EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:791:2: iv_ruleExecStatementOption= ruleExecStatementOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExecStatementOptionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleExecStatementOption_in_entryRuleExecStatementOption1794);
            iv_ruleExecStatementOption=ruleExecStatementOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExecStatementOption; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExecStatementOption1804); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExecStatementOption"


    // $ANTLR start "ruleExecStatementOption"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:798:1: ruleExecStatementOption returns [EObject current=null] : ( ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) ;
    public final EObject ruleExecStatementOption() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_1=null;
        Token lv_name_0_2=null;
        Token lv_name_0_3=null;
        Token otherlv_1=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:801:28: ( ( ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:802:1: ( ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:802:1: ( ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:802:2: ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:802:2: ( ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:803:1: ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:803:1: ( (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:804:1: (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:804:1: (lv_name_0_1= 'stdout' | lv_name_0_2= 'stderr' | lv_name_0_3= RULE_ID )
            int alt14=3;
            switch ( input.LA(1) ) {
            case 26:
                {
                alt14=1;
                }
                break;
            case 27:
                {
                alt14=2;
                }
                break;
            case RULE_ID:
                {
                alt14=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 14, 0, input);

                throw nvae;
            }

            switch (alt14) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:805:3: lv_name_0_1= 'stdout'
                    {
                    lv_name_0_1=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleExecStatementOption1849); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_1, grammarAccess.getExecStatementOptionAccess().getNameStdoutKeyword_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getExecStatementOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:817:8: lv_name_0_2= 'stderr'
                    {
                    lv_name_0_2=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleExecStatementOption1878); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_2, grammarAccess.getExecStatementOptionAccess().getNameStderrKeyword_0_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getExecStatementOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_2, null);
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:829:8: lv_name_0_3= RULE_ID
                    {
                    lv_name_0_3=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleExecStatementOption1906); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_3, grammarAccess.getExecStatementOptionAccess().getNameIDTerminalRuleCall_0_0_2()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getExecStatementOptionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_3, 
                              		"ID");
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleExecStatementOption1926); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getExecStatementOptionAccess().getEqualsSignKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:851:1: ( (lv_value_2_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:852:1: (lv_value_2_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:852:1: (lv_value_2_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:853:3: lv_value_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExecStatementOptionAccess().getValueExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExecStatementOption1947);
            lv_value_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExecStatementOptionRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExecStatementOption"


    // $ANTLR start "entryRuleLogStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:877:1: entryRuleLogStatement returns [EObject current=null] : iv_ruleLogStatement= ruleLogStatement EOF ;
    public final EObject entryRuleLogStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLogStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:878:2: (iv_ruleLogStatement= ruleLogStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:879:2: iv_ruleLogStatement= ruleLogStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLogStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLogStatement_in_entryRuleLogStatement1983);
            iv_ruleLogStatement=ruleLogStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLogStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLogStatement1993); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLogStatement"


    // $ANTLR start "ruleLogStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:886:1: ruleLogStatement returns [EObject current=null] : ( () ( (lv_operator_1_0= 'log' ) ) ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )? ( (lv_children_3_0= ruleExpression ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )* ) ;
    public final EObject ruleLogStatement() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        Token lv_value_2_1=null;
        Token lv_value_2_2=null;
        Token lv_value_2_3=null;
        Token otherlv_4=null;
        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:889:28: ( ( () ( (lv_operator_1_0= 'log' ) ) ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )? ( (lv_children_3_0= ruleExpression ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:890:1: ( () ( (lv_operator_1_0= 'log' ) ) ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )? ( (lv_children_3_0= ruleExpression ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:890:1: ( () ( (lv_operator_1_0= 'log' ) ) ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )? ( (lv_children_3_0= ruleExpression ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:890:2: () ( (lv_operator_1_0= 'log' ) ) ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )? ( (lv_children_3_0= ruleExpression ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )*
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:890:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:891:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getLogStatementAccess().getExpressionAction_0(),
                          current);
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:896:2: ( (lv_operator_1_0= 'log' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:897:1: (lv_operator_1_0= 'log' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:897:1: (lv_operator_1_0= 'log' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:898:3: lv_operator_1_0= 'log'
            {
            lv_operator_1_0=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleLogStatement2045); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_1_0, grammarAccess.getLogStatementAccess().getOperatorLogKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLogStatementRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_1_0, "log");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:911:2: ( ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( ((LA16_0>=29 && LA16_0<=31)) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:912:1: ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:912:1: ( (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:913:1: (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:913:1: (lv_value_2_1= 'error' | lv_value_2_2= 'warning' | lv_value_2_3= 'info' )
                    int alt15=3;
                    switch ( input.LA(1) ) {
                    case 29:
                        {
                        alt15=1;
                        }
                        break;
                    case 30:
                        {
                        alt15=2;
                        }
                        break;
                    case 31:
                        {
                        alt15=3;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 15, 0, input);

                        throw nvae;
                    }

                    switch (alt15) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:914:3: lv_value_2_1= 'error'
                            {
                            lv_value_2_1=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleLogStatement2078); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_value_2_1, grammarAccess.getLogStatementAccess().getValueErrorKeyword_2_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLogStatementRule());
                              	        }
                                     		setWithLastConsumed(current, "value", lv_value_2_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:926:8: lv_value_2_2= 'warning'
                            {
                            lv_value_2_2=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleLogStatement2107); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_value_2_2, grammarAccess.getLogStatementAccess().getValueWarningKeyword_2_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLogStatementRule());
                              	        }
                                     		setWithLastConsumed(current, "value", lv_value_2_2, null);
                              	    
                            }

                            }
                            break;
                        case 3 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:938:8: lv_value_2_3= 'info'
                            {
                            lv_value_2_3=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleLogStatement2136); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_value_2_3, grammarAccess.getLogStatementAccess().getValueInfoKeyword_2_0_2());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getLogStatementRule());
                              	        }
                                     		setWithLastConsumed(current, "value", lv_value_2_3, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:953:3: ( (lv_children_3_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:954:1: (lv_children_3_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:954:1: (lv_children_3_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:955:3: lv_children_3_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLogStatementAccess().getChildrenExpressionParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleLogStatement2174);
            lv_children_3_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLogStatementRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_3_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:971:2: (otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( (LA17_0==19) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:971:4: otherlv_4= ',' ( (lv_children_5_0= ruleExpression ) )
            	    {
            	    otherlv_4=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleLogStatement2187); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_4, grammarAccess.getLogStatementAccess().getCommaKeyword_4_0());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:975:1: ( (lv_children_5_0= ruleExpression ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:976:1: (lv_children_5_0= ruleExpression )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:976:1: (lv_children_5_0= ruleExpression )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:977:3: lv_children_5_0= ruleExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLogStatementAccess().getChildrenExpressionParserRuleCall_4_1_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleLogStatement2208);
            	    lv_children_5_0=ruleExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLogStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_5_0, 
            	              		"Expression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLogStatement"


    // $ANTLR start "entryRuleLogConfigStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1001:1: entryRuleLogConfigStatement returns [EObject current=null] : iv_ruleLogConfigStatement= ruleLogConfigStatement EOF ;
    public final EObject entryRuleLogConfigStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLogConfigStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1002:2: (iv_ruleLogConfigStatement= ruleLogConfigStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1003:2: iv_ruleLogConfigStatement= ruleLogConfigStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLogConfigStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLogConfigStatement_in_entryRuleLogConfigStatement2246);
            iv_ruleLogConfigStatement=ruleLogConfigStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLogConfigStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLogConfigStatement2256); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLogConfigStatement"


    // $ANTLR start "ruleLogConfigStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1010:1: ruleLogConfigStatement returns [EObject current=null] : ( ( (lv_operator_0_0= 'logconfig' ) ) otherlv_1= '{' ( (lv_children_2_0= ruleArgument ) )* otherlv_3= '}' ) ;
    public final EObject ruleLogConfigStatement() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_children_2_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1013:28: ( ( ( (lv_operator_0_0= 'logconfig' ) ) otherlv_1= '{' ( (lv_children_2_0= ruleArgument ) )* otherlv_3= '}' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1014:1: ( ( (lv_operator_0_0= 'logconfig' ) ) otherlv_1= '{' ( (lv_children_2_0= ruleArgument ) )* otherlv_3= '}' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1014:1: ( ( (lv_operator_0_0= 'logconfig' ) ) otherlv_1= '{' ( (lv_children_2_0= ruleArgument ) )* otherlv_3= '}' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1014:2: ( (lv_operator_0_0= 'logconfig' ) ) otherlv_1= '{' ( (lv_children_2_0= ruleArgument ) )* otherlv_3= '}'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1014:2: ( (lv_operator_0_0= 'logconfig' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1015:1: (lv_operator_0_0= 'logconfig' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1015:1: (lv_operator_0_0= 'logconfig' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1016:3: lv_operator_0_0= 'logconfig'
            {
            lv_operator_0_0=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleLogConfigStatement2299); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_0_0, grammarAccess.getLogConfigStatementAccess().getOperatorLogconfigKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLogConfigStatementRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_0_0, "logconfig");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleLogConfigStatement2324); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getLogConfigStatementAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1033:1: ( (lv_children_2_0= ruleArgument ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( ((LA18_0>=RULE_ID && LA18_0<=RULE_INT)||LA18_0==18||LA18_0==33||(LA18_0>=44 && LA18_0<=45)||LA18_0==60||LA18_0==63||LA18_0==81||(LA18_0>=87 && LA18_0<=99)||(LA18_0>=106 && LA18_0<=107)) ) {
                    alt18=1;
                }


                switch (alt18) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1034:1: (lv_children_2_0= ruleArgument )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1034:1: (lv_children_2_0= ruleArgument )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1035:3: lv_children_2_0= ruleArgument
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLogConfigStatementAccess().getChildrenArgumentParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLogConfigStatement2345);
            	    lv_children_2_0=ruleArgument();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLogConfigStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_2_0, 
            	              		"Argument");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            otherlv_3=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleLogConfigStatement2358); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getLogConfigStatementAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLogConfigStatement"


    // $ANTLR start "entryRuleBlockSpecialStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1063:1: entryRuleBlockSpecialStatement returns [EObject current=null] : iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF ;
    public final EObject entryRuleBlockSpecialStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlockSpecialStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1064:2: (iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1065:2: iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBlockSpecialStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBlockSpecialStatement_in_entryRuleBlockSpecialStatement2394);
            iv_ruleBlockSpecialStatement=ruleBlockSpecialStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBlockSpecialStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlockSpecialStatement2404); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlockSpecialStatement"


    // $ANTLR start "ruleBlockSpecialStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1072:1: ruleBlockSpecialStatement returns [EObject current=null] : ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) ) ;
    public final EObject ruleBlockSpecialStatement() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_1=null;
        Token lv_name_1_2=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1075:28: ( ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1076:1: ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1076:1: ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1076:2: () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1076:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1077:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBlockSpecialStatementAccess().getSpecialStatementAction_0(),
                          current);
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1082:2: ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1083:1: ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1083:1: ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1084:1: (lv_name_1_1= 'continue' | lv_name_1_2= 'break' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1084:1: (lv_name_1_1= 'continue' | lv_name_1_2= 'break' )
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==35) ) {
                alt19=1;
            }
            else if ( (LA19_0==36) ) {
                alt19=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1085:3: lv_name_1_1= 'continue'
                    {
                    lv_name_1_1=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleBlockSpecialStatement2458); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_1_1, grammarAccess.getBlockSpecialStatementAccess().getNameContinueKeyword_1_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getBlockSpecialStatementRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_1_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1097:8: lv_name_1_2= 'break'
                    {
                    lv_name_1_2=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleBlockSpecialStatement2487); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_1_2, grammarAccess.getBlockSpecialStatementAccess().getNameBreakKeyword_1_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getBlockSpecialStatementRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_1_2, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlockSpecialStatement"


    // $ANTLR start "entryRuleReturnStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1120:1: entryRuleReturnStatement returns [EObject current=null] : iv_ruleReturnStatement= ruleReturnStatement EOF ;
    public final EObject entryRuleReturnStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1121:2: (iv_ruleReturnStatement= ruleReturnStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1122:2: iv_ruleReturnStatement= ruleReturnStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReturnStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement2539);
            iv_ruleReturnStatement=ruleReturnStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReturnStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleReturnStatement2549); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturnStatement"


    // $ANTLR start "ruleReturnStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1129:1: ruleReturnStatement returns [EObject current=null] : ( ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) ) otherlv_2= ';' ) ;
    public final EObject ruleReturnStatement() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        EObject lv_children_1_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1132:28: ( ( ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) ) otherlv_2= ';' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1133:1: ( ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) ) otherlv_2= ';' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1133:1: ( ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) ) otherlv_2= ';' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1133:2: ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) ) otherlv_2= ';'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1133:2: ( ( ( 'return' ) )=> (lv_name_0_0= 'return' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1133:3: ( ( 'return' ) )=> (lv_name_0_0= 'return' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1140:1: (lv_name_0_0= 'return' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1141:3: lv_name_0_0= 'return'
            {
            lv_name_0_0=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleReturnStatement2607); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_name_0_0, grammarAccess.getReturnStatementAccess().getNameReturnKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getReturnStatementRule());
              	        }
                     		setWithLastConsumed(current, "name", lv_name_0_0, "return");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1154:2: ( (lv_children_1_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1155:1: (lv_children_1_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1155:1: (lv_children_1_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1156:3: lv_children_1_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getReturnStatementAccess().getChildrenExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleReturnStatement2641);
            lv_children_1_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getReturnStatementRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_1_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleReturnStatement2653); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getReturnStatementAccess().getSemicolonKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturnStatement"


    // $ANTLR start "entryRuleEmptyStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1184:1: entryRuleEmptyStatement returns [EObject current=null] : iv_ruleEmptyStatement= ruleEmptyStatement EOF ;
    public final EObject entryRuleEmptyStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEmptyStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1185:2: (iv_ruleEmptyStatement= ruleEmptyStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1186:2: iv_ruleEmptyStatement= ruleEmptyStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEmptyStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_entryRuleEmptyStatement2689);
            iv_ruleEmptyStatement=ruleEmptyStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEmptyStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEmptyStatement2699); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEmptyStatement"


    // $ANTLR start "ruleEmptyStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1193:1: ruleEmptyStatement returns [EObject current=null] : ( () otherlv_1= ';' ) ;
    public final EObject ruleEmptyStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1196:28: ( ( () otherlv_1= ';' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1197:1: ( () otherlv_1= ';' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1197:1: ( () otherlv_1= ';' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1197:2: () otherlv_1= ';'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1197:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1198:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getEmptyStatementAccess().getStatementAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleEmptyStatement2745); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEmptyStatementAccess().getSemicolonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEmptyStatement"


    // $ANTLR start "entryRuleCompositeStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1215:1: entryRuleCompositeStatement returns [EObject current=null] : iv_ruleCompositeStatement= ruleCompositeStatement EOF ;
    public final EObject entryRuleCompositeStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompositeStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1216:2: (iv_ruleCompositeStatement= ruleCompositeStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1217:2: iv_ruleCompositeStatement= ruleCompositeStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCompositeStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_entryRuleCompositeStatement2781);
            iv_ruleCompositeStatement=ruleCompositeStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCompositeStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompositeStatement2791); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompositeStatement"


    // $ANTLR start "ruleCompositeStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1224:1: ruleCompositeStatement returns [EObject current=null] : ( () ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' ) ) ;
    public final EObject ruleCompositeStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_children_2_1 = null;

        EObject lv_children_2_2 = null;

        EObject lv_children_2_3 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1227:28: ( ( () ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1228:1: ( () ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1228:1: ( () ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1228:2: () ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1228:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1229:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getCompositeStatementAccess().getStatementAction_0(),
                          current);
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1234:2: ( ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1234:3: ( ( '{' )=>otherlv_1= '{' ) ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* otherlv_3= '}'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1234:3: ( ( '{' )=>otherlv_1= '{' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1234:4: ( '{' )=>otherlv_1= '{'
            {
            otherlv_1=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleCompositeStatement2846); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getCompositeStatementAccess().getLeftCurlyBracketKeyword_1_0());
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1239:2: ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )*
            loop21:
            do {
                int alt21=2;
                int LA21_0 = input.LA(1);

                if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_INT)||LA21_0==14||LA21_0==18||LA21_0==24||LA21_0==28||(LA21_0>=32 && LA21_0<=33)||(LA21_0>=35 && LA21_0<=41)||(LA21_0>=44 && LA21_0<=45)||LA21_0==55||LA21_0==57||LA21_0==59||LA21_0==81||(LA21_0>=87 && LA21_0<=99)||(LA21_0>=106 && LA21_0<=107)) ) {
                    alt21=1;
                }


                switch (alt21) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1240:1: ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1240:1: ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1241:1: (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1241:1: (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement )
            	    int alt20=3;
            	    switch ( input.LA(1) ) {
            	    case RULE_ID:
            	    case RULE_STRING:
            	    case RULE_VERBATIM_STRING:
            	    case RULE_INT:
            	    case 14:
            	    case 18:
            	    case 24:
            	    case 28:
            	    case 32:
            	    case 33:
            	    case 38:
            	    case 39:
            	    case 40:
            	    case 41:
            	    case 44:
            	    case 45:
            	    case 55:
            	    case 57:
            	    case 59:
            	    case 81:
            	    case 87:
            	    case 88:
            	    case 89:
            	    case 90:
            	    case 91:
            	    case 92:
            	    case 93:
            	    case 94:
            	    case 95:
            	    case 96:
            	    case 97:
            	    case 98:
            	    case 99:
            	    case 106:
            	    case 107:
            	        {
            	        alt20=1;
            	        }
            	        break;
            	    case 37:
            	        {
            	        alt20=2;
            	        }
            	        break;
            	    case 35:
            	    case 36:
            	        {
            	        alt20=3;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 20, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt20) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1242:3: lv_children_2_1= ruleStatement
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenStatementParserRuleCall_1_1_0_0()); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleCompositeStatement2870);
            	            lv_children_2_1=ruleStatement();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getCompositeStatementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"children",
            	                      		lv_children_2_1, 
            	                      		"Statement");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1257:8: lv_children_2_2= ruleReturnStatement
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenReturnStatementParserRuleCall_1_1_0_1()); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleReturnStatement_in_ruleCompositeStatement2889);
            	            lv_children_2_2=ruleReturnStatement();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getCompositeStatementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"children",
            	                      		lv_children_2_2, 
            	                      		"ReturnStatement");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1272:8: lv_children_2_3= ruleBlockSpecialStatement
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenBlockSpecialStatementParserRuleCall_1_1_0_2()); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleBlockSpecialStatement_in_ruleCompositeStatement2908);
            	            lv_children_2_3=ruleBlockSpecialStatement();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getCompositeStatementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"children",
            	                      		lv_children_2_3, 
            	                      		"BlockSpecialStatement");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);

            otherlv_3=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleCompositeStatement2924); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getCompositeStatementAccess().getRightCurlyBracketKeyword_1_2());
                  
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompositeStatement"


    // $ANTLR start "entryRuleDeclarationStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1302:1: entryRuleDeclarationStatement returns [EObject current=null] : iv_ruleDeclarationStatement= ruleDeclarationStatement EOF ;
    public final EObject entryRuleDeclarationStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeclarationStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1303:2: (iv_ruleDeclarationStatement= ruleDeclarationStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1304:2: iv_ruleDeclarationStatement= ruleDeclarationStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDeclarationStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_entryRuleDeclarationStatement2961);
            iv_ruleDeclarationStatement=ruleDeclarationStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDeclarationStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDeclarationStatement2971); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDeclarationStatement"


    // $ANTLR start "ruleDeclarationStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1311:1: ruleDeclarationStatement returns [EObject current=null] : (otherlv_0= 'var' ( (lv_children_1_0= ruleVarEntry ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )* ) ;
    public final EObject ruleDeclarationStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_children_1_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1314:28: ( (otherlv_0= 'var' ( (lv_children_1_0= ruleVarEntry ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1315:1: (otherlv_0= 'var' ( (lv_children_1_0= ruleVarEntry ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1315:1: (otherlv_0= 'var' ( (lv_children_1_0= ruleVarEntry ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1315:3: otherlv_0= 'var' ( (lv_children_1_0= ruleVarEntry ) ) (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )*
            {
            otherlv_0=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDeclarationStatement3008); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getDeclarationStatementAccess().getVarKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1319:1: ( (lv_children_1_0= ruleVarEntry ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1320:1: (lv_children_1_0= ruleVarEntry )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1320:1: (lv_children_1_0= ruleVarEntry )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1321:3: lv_children_1_0= ruleVarEntry
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getDeclarationStatementAccess().getChildrenVarEntryParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_ruleDeclarationStatement3029);
            lv_children_1_0=ruleVarEntry();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getDeclarationStatementRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_1_0, 
                      		"VarEntry");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1337:2: (otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0==19) ) {
                    int LA22_2 = input.LA(2);

                    if ( (LA22_2==RULE_ID) ) {
                        alt22=1;
                    }


                }


                switch (alt22) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1337:4: otherlv_2= ',' ( (lv_children_3_0= ruleVarEntry ) )
            	    {
            	    otherlv_2=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleDeclarationStatement3042); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getDeclarationStatementAccess().getCommaKeyword_2_0());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1341:1: ( (lv_children_3_0= ruleVarEntry ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1342:1: (lv_children_3_0= ruleVarEntry )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1342:1: (lv_children_3_0= ruleVarEntry )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1343:3: lv_children_3_0= ruleVarEntry
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getDeclarationStatementAccess().getChildrenVarEntryParserRuleCall_2_1_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_ruleDeclarationStatement3063);
            	    lv_children_3_0=ruleVarEntry();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getDeclarationStatementRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"VarEntry");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDeclarationStatement"


    // $ANTLR start "entryRuleVarEntry"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1367:1: entryRuleVarEntry returns [EObject current=null] : iv_ruleVarEntry= ruleVarEntry EOF ;
    public final EObject entryRuleVarEntry() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVarEntry = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1368:2: (iv_ruleVarEntry= ruleVarEntry EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1369:2: iv_ruleVarEntry= ruleVarEntry EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVarEntryRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_entryRuleVarEntry3101);
            iv_ruleVarEntry=ruleVarEntry();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVarEntry; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVarEntry3111); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVarEntry"


    // $ANTLR start "ruleVarEntry"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1376:1: ruleVarEntry returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )? ) ;
    public final EObject ruleVarEntry() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        EObject lv_children_2_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1379:28: ( ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1380:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1380:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1380:2: ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )?
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1380:2: ( (lv_name_0_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1381:1: (lv_name_0_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1381:1: (lv_name_0_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1382:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleVarEntry3153); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getVarEntryAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVarEntryRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1398:2: (otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==23) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1398:4: otherlv_1= '=' ( (lv_children_2_0= ruleExpression ) )
                    {
                    otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleVarEntry3171); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getVarEntryAccess().getEqualsSignKeyword_1_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1402:1: ( (lv_children_2_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1403:1: (lv_children_2_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1403:1: (lv_children_2_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1404:3: lv_children_2_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getVarEntryAccess().getChildrenExpressionParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleVarEntry3192);
                    lv_children_2_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getVarEntryRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_2_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVarEntry"


    // $ANTLR start "entryRuleLocateStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1428:1: entryRuleLocateStatement returns [EObject current=null] : iv_ruleLocateStatement= ruleLocateStatement EOF ;
    public final EObject entryRuleLocateStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLocateStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1429:2: (iv_ruleLocateStatement= ruleLocateStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1430:2: iv_ruleLocateStatement= ruleLocateStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLocateStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLocateStatement_in_entryRuleLocateStatement3230);
            iv_ruleLocateStatement=ruleLocateStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLocateStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocateStatement3240); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLocateStatement"


    // $ANTLR start "ruleLocateStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1437:1: ruleLocateStatement returns [EObject current=null] : ( ( (lv_optional_0_0= 'optional' ) )? otherlv_1= 'locate' ( (lv_children_2_0= ruleArgument ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) ) ) ;
    public final EObject ruleLocateStatement() throws RecognitionException {
        EObject current = null;

        Token lv_optional_0_0=null;
        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        EObject lv_children_2_0 = null;

        AntlrDatatypeRuleToken lv_position_5_0 = null;

        EObject lv_flag_8_0 = null;

        EObject lv_children_12_0 = null;

        EObject lv_children_14_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1440:28: ( ( ( (lv_optional_0_0= 'optional' ) )? otherlv_1= 'locate' ( (lv_children_2_0= ruleArgument ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1441:1: ( ( (lv_optional_0_0= 'optional' ) )? otherlv_1= 'locate' ( (lv_children_2_0= ruleArgument ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1441:1: ( ( (lv_optional_0_0= 'optional' ) )? otherlv_1= 'locate' ( (lv_children_2_0= ruleArgument ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1441:2: ( (lv_optional_0_0= 'optional' ) )? otherlv_1= 'locate' ( (lv_children_2_0= ruleArgument ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1441:2: ( (lv_optional_0_0= 'optional' ) )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==39) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1442:1: (lv_optional_0_0= 'optional' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1442:1: (lv_optional_0_0= 'optional' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1443:3: lv_optional_0_0= 'optional'
                    {
                    lv_optional_0_0=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleLocateStatement3283); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_optional_0_0, grammarAccess.getLocateStatementAccess().getOptionalOptionalKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLocateStatementRule());
                      	        }
                             		setWithLastConsumed(current, "optional", true, "optional");
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleLocateStatement3309); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getLocateStatementAccess().getLocateKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1460:1: ( (lv_children_2_0= ruleArgument ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1461:1: (lv_children_2_0= ruleArgument )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1461:1: (lv_children_2_0= ruleArgument )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1462:3: lv_children_2_0= ruleArgument
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLocateStatement3330);
            lv_children_2_0=ruleArgument();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLocateStatementRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_2_0, 
                      		"Argument");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1478:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1480:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1480:1: ( ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1481:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?)
            {
            getUnorderedGroupHelper().enter(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1484:2: ( ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?)
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1485:3: ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+ {...}?
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1485:3: ( ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) ) )+
            int cnt27=0;
            loop27:
            do {
                int alt27=4;
                int LA27_0 = input.LA(1);

                if ( LA27_0 ==41 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0) ) {
                    alt27=1;
                }
                else if ( LA27_0 ==42 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1) ) {
                    alt27=2;
                }
                else if ( LA27_0 ==43 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2) ) {
                    alt27=3;
                }


                switch (alt27) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1487:4: ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1487:4: ({...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1488:5: {...}? => ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0)");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1488:112: ( ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1489:6: ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0);
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1492:6: ({...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1492:7: {...}? => (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "true");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1492:16: (otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1492:18: otherlv_4= 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) )
            	    {
            	    otherlv_4=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleLocateStatement3388); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_4, grammarAccess.getLocateStatementAccess().getForKeyword_3_0_0());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1496:1: ( (lv_position_5_0= rulePOSITION_CONSTANTS ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1497:1: (lv_position_5_0= rulePOSITION_CONSTANTS )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1497:1: (lv_position_5_0= rulePOSITION_CONSTANTS )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1498:3: lv_position_5_0= rulePOSITION_CONSTANTS
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLocateStatementAccess().getPositionPOSITION_CONSTANTSParserRuleCall_3_0_1_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_rulePOSITION_CONSTANTS_in_ruleLocateStatement3409);
            	    lv_position_5_0=rulePOSITION_CONSTANTS();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLocateStatementRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"position",
            	              		lv_position_5_0, 
            	              		"POSITION_CONSTANTS");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1521:4: ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1521:4: ({...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1522:5: {...}? => ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1)");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1522:112: ( ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1523:6: ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1);
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1526:6: ({...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1526:7: {...}? => (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "true");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1526:16: (otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1526:18: otherlv_6= 'option' otherlv_7= '=' ( (lv_flag_8_0= ruleExpression ) )
            	    {
            	    otherlv_6=(Token)match(input,42,FollowSets000.FOLLOW_42_in_ruleLocateStatement3477); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_6, grammarAccess.getLocateStatementAccess().getOptionKeyword_3_1_0());
            	          
            	    }
            	    otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleLocateStatement3489); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_7, grammarAccess.getLocateStatementAccess().getEqualsSignKeyword_3_1_1());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1534:1: ( (lv_flag_8_0= ruleExpression ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1535:1: (lv_flag_8_0= ruleExpression )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1535:1: (lv_flag_8_0= ruleExpression )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1536:3: lv_flag_8_0= ruleExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLocateStatementAccess().getFlagExpressionParserRuleCall_3_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleLocateStatement3510);
            	    lv_flag_8_0=ruleExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getLocateStatementRule());
            	      	        }
            	             		set(
            	             			current, 
            	             			"flag",
            	              		lv_flag_8_0, 
            	              		"Expression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1559:4: ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1559:4: ({...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1560:5: {...}? => ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2)");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1560:112: ( ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1561:6: ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2);
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1564:6: ({...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1564:7: {...}? => (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' )
            	    {
            	    if ( !((true)) ) {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "true");
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1564:16: (otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1564:18: otherlv_9= 'using' ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )? otherlv_15= ')'
            	    {
            	    otherlv_9=(Token)match(input,43,FollowSets000.FOLLOW_43_in_ruleLocateStatement3578); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_9, grammarAccess.getLocateStatementAccess().getUsingKeyword_3_2_0());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1568:1: ( ( ruleQualifiedID ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1569:1: ( ruleQualifiedID )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1569:1: ( ruleQualifiedID )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1570:3: ruleQualifiedID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getLocateStatementRule());
            	      	        }
            	              
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getLocateStatementAccess().getLocatorLocatorProxyCrossReference_3_2_1_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleLocateStatement3601);
            	    ruleQualifiedID();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {
            	       
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_11=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleLocateStatement3613); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_11, grammarAccess.getLocateStatementAccess().getLeftParenthesisKeyword_3_2_2());
            	          
            	    }
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1587:1: ( ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )* )?
            	    int alt26=2;
            	    int LA26_0 = input.LA(1);

            	    if ( ((LA26_0>=RULE_ID && LA26_0<=RULE_INT)||LA26_0==18||LA26_0==33||(LA26_0>=44 && LA26_0<=45)||LA26_0==60||LA26_0==63||LA26_0==81||(LA26_0>=87 && LA26_0<=99)||(LA26_0>=106 && LA26_0<=107)) ) {
            	        alt26=1;
            	    }
            	    switch (alt26) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1587:2: ( (lv_children_12_0= ruleArgument ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )*
            	            {
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1587:2: ( (lv_children_12_0= ruleArgument ) )
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1588:1: (lv_children_12_0= ruleArgument )
            	            {
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1588:1: (lv_children_12_0= ruleArgument )
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1589:3: lv_children_12_0= ruleArgument
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_0_0()); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLocateStatement3635);
            	            lv_children_12_0=ruleArgument();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getLocateStatementRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"children",
            	                      		lv_children_12_0, 
            	                      		"Argument");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1605:2: (otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) ) )*
            	            loop25:
            	            do {
            	                int alt25=2;
            	                int LA25_0 = input.LA(1);

            	                if ( (LA25_0==19) ) {
            	                    alt25=1;
            	                }


            	                switch (alt25) {
            	            	case 1 :
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1605:4: otherlv_13= ',' ( (lv_children_14_0= ruleArgument ) )
            	            	    {
            	            	    otherlv_13=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleLocateStatement3648); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_13, grammarAccess.getLocateStatementAccess().getCommaKeyword_3_2_3_1_0());
            	            	          
            	            	    }
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1609:1: ( (lv_children_14_0= ruleArgument ) )
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1610:1: (lv_children_14_0= ruleArgument )
            	            	    {
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1610:1: (lv_children_14_0= ruleArgument )
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1611:3: lv_children_14_0= ruleArgument
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_1_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLocateStatement3669);
            	            	    lv_children_14_0=ruleArgument();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getLocateStatementRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"children",
            	            	              		lv_children_14_0, 
            	            	              		"Argument");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop25;
            	                }
            	            } while (true);


            	            }
            	            break;

            	    }

            	    otherlv_15=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleLocateStatement3685); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_15, grammarAccess.getLocateStatementAccess().getRightParenthesisKeyword_3_2_4());
            	          
            	    }

            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt27 >= 1 ) break loop27;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(27, input);
                        throw eee;
                }
                cnt27++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3()) ) {
                if (state.backtracking>0) {state.failed=true; return current;}
                throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canLeave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3())");
            }

            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLocateStatement"


    // $ANTLR start "entryRuleMatchStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1654:1: entryRuleMatchStatement returns [EObject current=null] : iv_ruleMatchStatement= ruleMatchStatement EOF ;
    public final EObject entryRuleMatchStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMatchStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1655:2: (iv_ruleMatchStatement= ruleMatchStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1656:2: iv_ruleMatchStatement= ruleMatchStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMatchStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMatchStatement_in_entryRuleMatchStatement3768);
            iv_ruleMatchStatement=ruleMatchStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMatchStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMatchStatement3778); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMatchStatement"


    // $ANTLR start "ruleMatchStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1663:1: ruleMatchStatement returns [EObject current=null] : (otherlv_0= 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? ) ;
    public final EObject ruleMatchStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_pattern_1_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;

        EObject lv_children_7_0 = null;

        EObject lv_children_9_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1666:28: ( (otherlv_0= 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1667:1: (otherlv_0= 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1667:1: (otherlv_0= 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1667:3: otherlv_0= 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )?
            {
            otherlv_0=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleMatchStatement3815); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getMatchStatementAccess().getMatchKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1671:1: ( (lv_pattern_1_0= rulePatternExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1672:1: (lv_pattern_1_0= rulePatternExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1672:1: (lv_pattern_1_0= rulePatternExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1673:3: lv_pattern_1_0= rulePatternExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getMatchStatementAccess().getPatternPatternExpressionParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_ruleMatchStatement3836);
            lv_pattern_1_0=rulePatternExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getMatchStatementRule());
              	        }
                     		set(
                     			current, 
                     			"pattern",
                      		lv_pattern_1_0, 
                      		"PatternExpression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:2: ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )?
            int alt29=2;
            alt29 = dfa29.predict(input);
            switch (alt29) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:3: ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:3: ( ( 'arguments' )=>otherlv_2= 'arguments' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:4: ( 'arguments' )=>otherlv_2= 'arguments'
                    {
                    otherlv_2=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleMatchStatement3857); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getMatchStatementAccess().getArgumentsKeyword_2_0());
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1694:2: ( (lv_children_3_0= ruleArgument ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1695:1: (lv_children_3_0= ruleArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1695:1: (lv_children_3_0= ruleArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1696:3: lv_children_3_0= ruleArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleMatchStatement3879);
                    lv_children_3_0=ruleArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getMatchStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"Argument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1712:2: (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    loop28:
                    do {
                        int alt28=2;
                        int LA28_0 = input.LA(1);

                        if ( (LA28_0==19) ) {
                            alt28=1;
                        }


                        switch (alt28) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1712:4: otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) )
                    	    {
                    	    otherlv_4=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleMatchStatement3892); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getMatchStatementAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1716:1: ( (lv_children_5_0= ruleArgument ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1717:1: (lv_children_5_0= ruleArgument )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1717:1: (lv_children_5_0= ruleArgument )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1718:3: lv_children_5_0= ruleArgument
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleMatchStatement3913);
                    	    lv_children_5_0=ruleArgument();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getMatchStatementRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_5_0, 
                    	              		"Argument");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop28;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:6: ( ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )?
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==25) ) {
                int LA31_1 = input.LA(2);

                if ( (synpred5_InternalDesl()) ) {
                    alt31=1;
                }
            }
            switch (alt31) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:7: ( ( 'options' )=>otherlv_6= 'options' ) ( (lv_children_7_0= ruleMatchOption ) ) (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:7: ( ( 'options' )=>otherlv_6= 'options' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:8: ( 'options' )=>otherlv_6= 'options'
                    {
                    otherlv_6=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleMatchStatement3938); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getMatchStatementAccess().getOptionsKeyword_3_0());
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1739:2: ( (lv_children_7_0= ruleMatchOption ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1740:1: (lv_children_7_0= ruleMatchOption )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1740:1: (lv_children_7_0= ruleMatchOption )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1741:3: lv_children_7_0= ruleMatchOption
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_ruleMatchStatement3960);
                    lv_children_7_0=ruleMatchOption();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getMatchStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_7_0, 
                              		"MatchOption");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1757:2: (otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) ) )*
                    loop30:
                    do {
                        int alt30=2;
                        int LA30_0 = input.LA(1);

                        if ( (LA30_0==19) ) {
                            alt30=1;
                        }


                        switch (alt30) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1757:4: otherlv_8= ',' ( (lv_children_9_0= ruleMatchOption ) )
                    	    {
                    	    otherlv_8=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleMatchStatement3973); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_8, grammarAccess.getMatchStatementAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1761:1: ( (lv_children_9_0= ruleMatchOption ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1762:1: (lv_children_9_0= ruleMatchOption )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1762:1: (lv_children_9_0= ruleMatchOption )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1763:3: lv_children_9_0= ruleMatchOption
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_ruleMatchStatement3994);
                    	    lv_children_9_0=ruleMatchOption();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getMatchStatementRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_9_0, 
                    	              		"MatchOption");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop30;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMatchStatement"


    // $ANTLR start "entryRuleMatchOption"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1787:1: entryRuleMatchOption returns [EObject current=null] : iv_ruleMatchOption= ruleMatchOption EOF ;
    public final EObject entryRuleMatchOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMatchOption = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1788:2: (iv_ruleMatchOption= ruleMatchOption EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1789:2: iv_ruleMatchOption= ruleMatchOption EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMatchOptionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_entryRuleMatchOption4034);
            iv_ruleMatchOption=ruleMatchOption();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMatchOption; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMatchOption4044); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMatchOption"


    // $ANTLR start "ruleMatchOption"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1796:1: ruleMatchOption returns [EObject current=null] : ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) ;
    public final EObject ruleMatchOption() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_1=null;
        Token lv_name_0_2=null;
        Token lv_name_0_3=null;
        Token lv_name_0_4=null;
        Token lv_name_0_5=null;
        Token lv_name_0_6=null;
        Token lv_name_0_7=null;
        Token lv_name_0_8=null;
        Token lv_name_0_9=null;
        Token otherlv_1=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1799:28: ( ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1800:1: ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1800:1: ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1800:2: ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) ) otherlv_1= '=' ( (lv_value_2_0= ruleExpression ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1800:2: ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1801:1: ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1801:1: ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1802:1: (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1802:1: (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' | lv_name_0_8= 'closeInputOnFinish' | lv_name_0_9= 'stopOnError' )
            int alt32=9;
            switch ( input.LA(1) ) {
            case 46:
                {
                alt32=1;
                }
                break;
            case 47:
                {
                alt32=2;
                }
                break;
            case 48:
                {
                alt32=3;
                }
                break;
            case 49:
                {
                alt32=4;
                }
                break;
            case 50:
                {
                alt32=5;
                }
                break;
            case 51:
                {
                alt32=6;
                }
                break;
            case 52:
                {
                alt32=7;
                }
                break;
            case 53:
                {
                alt32=8;
                }
                break;
            case 54:
                {
                alt32=9;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1803:3: lv_name_0_1= 'minOccur'
                    {
                    lv_name_0_1=(Token)match(input,46,FollowSets000.FOLLOW_46_in_ruleMatchOption4089); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_1, grammarAccess.getMatchOptionAccess().getNameMinOccurKeyword_0_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_1, null);
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1815:8: lv_name_0_2= 'maxOccur'
                    {
                    lv_name_0_2=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleMatchOption4118); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_2, grammarAccess.getMatchOptionAccess().getNameMaxOccurKeyword_0_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_2, null);
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1827:8: lv_name_0_3= 'returnLastOccurrenceOnly'
                    {
                    lv_name_0_3=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleMatchOption4147); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_3, grammarAccess.getMatchOptionAccess().getNameReturnLastOccurrenceOnlyKeyword_0_0_2());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_3, null);
                      	    
                    }

                    }
                    break;
                case 4 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1839:8: lv_name_0_4= 'input'
                    {
                    lv_name_0_4=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleMatchOption4176); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_4, grammarAccess.getMatchOptionAccess().getNameInputKeyword_0_0_3());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_4, null);
                      	    
                    }

                    }
                    break;
                case 5 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1851:8: lv_name_0_5= 'position'
                    {
                    lv_name_0_5=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleMatchOption4205); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_5, grammarAccess.getMatchOptionAccess().getNamePositionKeyword_0_0_4());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_5, null);
                      	    
                    }

                    }
                    break;
                case 6 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1863:8: lv_name_0_6= 'globalPosition'
                    {
                    lv_name_0_6=(Token)match(input,51,FollowSets000.FOLLOW_51_in_ruleMatchOption4234); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_6, grammarAccess.getMatchOptionAccess().getNameGlobalPositionKeyword_0_0_5());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_6, null);
                      	    
                    }

                    }
                    break;
                case 7 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1875:8: lv_name_0_7= 'updateParentPosition'
                    {
                    lv_name_0_7=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleMatchOption4263); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_7, grammarAccess.getMatchOptionAccess().getNameUpdateParentPositionKeyword_0_0_6());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_7, null);
                      	    
                    }

                    }
                    break;
                case 8 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1887:8: lv_name_0_8= 'closeInputOnFinish'
                    {
                    lv_name_0_8=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleMatchOption4292); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_8, grammarAccess.getMatchOptionAccess().getNameCloseInputOnFinishKeyword_0_0_7());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_8, null);
                      	    
                    }

                    }
                    break;
                case 9 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1899:8: lv_name_0_9= 'stopOnError'
                    {
                    lv_name_0_9=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleMatchOption4321); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_name_0_9, grammarAccess.getMatchOptionAccess().getNameStopOnErrorKeyword_0_0_8());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getMatchOptionRule());
                      	        }
                             		setWithLastConsumed(current, "name", lv_name_0_9, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }

            otherlv_1=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleMatchOption4349); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getMatchOptionAccess().getEqualsSignKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1918:1: ( (lv_value_2_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1919:1: (lv_value_2_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1919:1: (lv_value_2_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1920:3: lv_value_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getMatchOptionAccess().getValueExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleMatchOption4370);
            lv_value_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getMatchOptionRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMatchOption"


    // $ANTLR start "entryRuleIfStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1944:1: entryRuleIfStatement returns [EObject current=null] : iv_ruleIfStatement= ruleIfStatement EOF ;
    public final EObject entryRuleIfStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1945:2: (iv_ruleIfStatement= ruleIfStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1946:2: iv_ruleIfStatement= ruleIfStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIfStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleIfStatement_in_entryRuleIfStatement4406);
            iv_ruleIfStatement=ruleIfStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIfStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfStatement4416); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIfStatement"


    // $ANTLR start "ruleIfStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1953:1: ruleIfStatement returns [EObject current=null] : (otherlv_0= 'if' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )? ) ;
    public final EObject ruleIfStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_condition_2_0 = null;

        EObject lv_trueStatement_4_0 = null;

        EObject lv_falseStatement_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1956:28: ( (otherlv_0= 'if' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1957:1: (otherlv_0= 'if' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1957:1: (otherlv_0= 'if' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1957:3: otherlv_0= 'if' otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )?
            {
            otherlv_0=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleIfStatement4453); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getIfStatementAccess().getIfKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleIfStatement4465); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getIfStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1965:1: ( (lv_condition_2_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1966:1: (lv_condition_2_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1966:1: (lv_condition_2_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1967:3: lv_condition_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIfStatementAccess().getConditionExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleIfStatement4486);
            lv_condition_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_2_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleIfStatement4498); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getIfStatementAccess().getRightParenthesisKeyword_3());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1987:1: ( (lv_trueStatement_4_0= ruleStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1988:1: (lv_trueStatement_4_0= ruleStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1988:1: (lv_trueStatement_4_0= ruleStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1989:3: lv_trueStatement_4_0= ruleStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIfStatementAccess().getTrueStatementStatementParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleIfStatement4519);
            lv_trueStatement_4_0=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
              	        }
                     		set(
                     			current, 
                     			"trueStatement",
                      		lv_trueStatement_4_0, 
                      		"Statement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:2: ( ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==56) ) {
                int LA33_1 = input.LA(2);

                if ( (synpred6_InternalDesl()) ) {
                    alt33=1;
                }
            }
            switch (alt33) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:3: ( ( 'else' )=>otherlv_5= 'else' ) ( (lv_falseStatement_6_0= ruleStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:3: ( ( 'else' )=>otherlv_5= 'else' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:4: ( 'else' )=>otherlv_5= 'else'
                    {
                    otherlv_5=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleIfStatement4540); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getIfStatementAccess().getElseKeyword_5_0());
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2010:2: ( (lv_falseStatement_6_0= ruleStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2011:1: (lv_falseStatement_6_0= ruleStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2011:1: (lv_falseStatement_6_0= ruleStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2012:3: lv_falseStatement_6_0= ruleStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getIfStatementAccess().getFalseStatementStatementParserRuleCall_5_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleIfStatement4562);
                    lv_falseStatement_6_0=ruleStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getIfStatementRule());
                      	        }
                             		set(
                             			current, 
                             			"falseStatement",
                              		lv_falseStatement_6_0, 
                              		"Statement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIfStatement"


    // $ANTLR start "entryRuleLoopStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2036:1: entryRuleLoopStatement returns [EObject current=null] : iv_ruleLoopStatement= ruleLoopStatement EOF ;
    public final EObject entryRuleLoopStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLoopStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2037:2: (iv_ruleLoopStatement= ruleLoopStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2038:2: iv_ruleLoopStatement= ruleLoopStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLoopStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLoopStatement_in_entryRuleLoopStatement4600);
            iv_ruleLoopStatement=ruleLoopStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLoopStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLoopStatement4610); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLoopStatement"


    // $ANTLR start "ruleLoopStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2045:1: ruleLoopStatement returns [EObject current=null] : (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement ) ;
    public final EObject ruleLoopStatement() throws RecognitionException {
        EObject current = null;

        EObject this_ForStatement_0 = null;

        EObject this_ForEachStatement_1 = null;

        EObject this_WhileStatement_2 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2048:28: ( (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2049:1: (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2049:1: (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement )
            int alt34=3;
            switch ( input.LA(1) ) {
            case 41:
                {
                alt34=1;
                }
                break;
            case 57:
                {
                alt34=2;
                }
                break;
            case 59:
                {
                alt34=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }

            switch (alt34) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2050:5: this_ForStatement_0= ruleForStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLoopStatementAccess().getForStatementParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleForStatement_in_ruleLoopStatement4657);
                    this_ForStatement_0=ruleForStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ForStatement_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2060:5: this_ForEachStatement_1= ruleForEachStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLoopStatementAccess().getForEachStatementParserRuleCall_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleForEachStatement_in_ruleLoopStatement4684);
                    this_ForEachStatement_1=ruleForEachStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ForEachStatement_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2070:5: this_WhileStatement_2= ruleWhileStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getLoopStatementAccess().getWhileStatementParserRuleCall_2()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleWhileStatement_in_ruleLoopStatement4711);
                    this_WhileStatement_2=ruleWhileStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_WhileStatement_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLoopStatement"


    // $ANTLR start "entryRuleForStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2086:1: entryRuleForStatement returns [EObject current=null] : iv_ruleForStatement= ruleForStatement EOF ;
    public final EObject entryRuleForStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2087:2: (iv_ruleForStatement= ruleForStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2088:2: iv_ruleForStatement= ruleForStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getForStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForStatement_in_entryRuleForStatement4746);
            iv_ruleForStatement=ruleForStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleForStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForStatement4756); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForStatement"


    // $ANTLR start "ruleForStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2095:1: ruleForStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'for' ) ) otherlv_1= '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) otherlv_3= ';' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) otherlv_7= ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) ) ;
    public final EObject ruleForStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_initStatement_2_0 = null;

        EObject lv_condition_4_0 = null;

        EObject lv_postStatement_6_0 = null;

        EObject lv_bodyStatement_8_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2098:28: ( ( ( (lv_loopType_0_0= 'for' ) ) otherlv_1= '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) otherlv_3= ';' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) otherlv_7= ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2099:1: ( ( (lv_loopType_0_0= 'for' ) ) otherlv_1= '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) otherlv_3= ';' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) otherlv_7= ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2099:1: ( ( (lv_loopType_0_0= 'for' ) ) otherlv_1= '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) otherlv_3= ';' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) otherlv_7= ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2099:2: ( (lv_loopType_0_0= 'for' ) ) otherlv_1= '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) otherlv_3= ';' ( (lv_condition_4_0= ruleExpression ) ) otherlv_5= ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) otherlv_7= ')' ( (lv_bodyStatement_8_0= ruleStatement ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2099:2: ( (lv_loopType_0_0= 'for' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2100:1: (lv_loopType_0_0= 'for' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2100:1: (lv_loopType_0_0= 'for' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2101:3: lv_loopType_0_0= 'for'
            {
            lv_loopType_0_0=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleForStatement4799); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_loopType_0_0, grammarAccess.getForStatementAccess().getLoopTypeForKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getForStatementRule());
              	        }
                     		setWithLastConsumed(current, "loopType", lv_loopType_0_0, "for");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleForStatement4824); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getForStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2118:1: ( (lv_initStatement_2_0= ruleForInitStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2119:1: (lv_initStatement_2_0= ruleForInitStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2119:1: (lv_initStatement_2_0= ruleForInitStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2120:3: lv_initStatement_2_0= ruleForInitStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getInitStatementForInitStatementParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleForInitStatement_in_ruleForStatement4845);
            lv_initStatement_2_0=ruleForInitStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		set(
                     			current, 
                     			"initStatement",
                      		lv_initStatement_2_0, 
                      		"ForInitStatement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleForStatement4857); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getForStatementAccess().getSemicolonKeyword_3());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2140:1: ( (lv_condition_4_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2141:1: (lv_condition_4_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2141:1: (lv_condition_4_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2142:3: lv_condition_4_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getConditionExpressionParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleForStatement4878);
            lv_condition_4_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_4_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_5=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleForStatement4890); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getForStatementAccess().getSemicolonKeyword_5());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2162:1: ( (lv_postStatement_6_0= ruleForPostStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2163:1: (lv_postStatement_6_0= ruleForPostStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2163:1: (lv_postStatement_6_0= ruleForPostStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2164:3: lv_postStatement_6_0= ruleForPostStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getPostStatementForPostStatementParserRuleCall_6_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleForPostStatement_in_ruleForStatement4911);
            lv_postStatement_6_0=ruleForPostStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		set(
                     			current, 
                     			"postStatement",
                      		lv_postStatement_6_0, 
                      		"ForPostStatement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_7=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleForStatement4923); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getForStatementAccess().getRightParenthesisKeyword_7());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2184:1: ( (lv_bodyStatement_8_0= ruleStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2185:1: (lv_bodyStatement_8_0= ruleStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2185:1: (lv_bodyStatement_8_0= ruleStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2186:3: lv_bodyStatement_8_0= ruleStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForStatementAccess().getBodyStatementStatementParserRuleCall_8_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleForStatement4944);
            lv_bodyStatement_8_0=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForStatementRule());
              	        }
                     		set(
                     			current, 
                     			"bodyStatement",
                      		lv_bodyStatement_8_0, 
                      		"Statement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForStatement"


    // $ANTLR start "entryRuleForEachStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2210:1: entryRuleForEachStatement returns [EObject current=null] : iv_ruleForEachStatement= ruleForEachStatement EOF ;
    public final EObject entryRuleForEachStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForEachStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2211:2: (iv_ruleForEachStatement= ruleForEachStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2212:2: iv_ruleForEachStatement= ruleForEachStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getForEachStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForEachStatement_in_entryRuleForEachStatement4980);
            iv_ruleForEachStatement=ruleForEachStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleForEachStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForEachStatement4990); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForEachStatement"


    // $ANTLR start "ruleForEachStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2219:1: ruleForEachStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'foreach' ) ) otherlv_1= '(' otherlv_2= 'var' ( (lv_controlVar_3_0= RULE_ID ) ) otherlv_4= 'in' ( (lv_condition_5_0= ruleExpression ) ) otherlv_6= ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) ) ;
    public final EObject ruleForEachStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_controlVar_3_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_condition_5_0 = null;

        EObject lv_bodyStatement_7_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2222:28: ( ( ( (lv_loopType_0_0= 'foreach' ) ) otherlv_1= '(' otherlv_2= 'var' ( (lv_controlVar_3_0= RULE_ID ) ) otherlv_4= 'in' ( (lv_condition_5_0= ruleExpression ) ) otherlv_6= ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2223:1: ( ( (lv_loopType_0_0= 'foreach' ) ) otherlv_1= '(' otherlv_2= 'var' ( (lv_controlVar_3_0= RULE_ID ) ) otherlv_4= 'in' ( (lv_condition_5_0= ruleExpression ) ) otherlv_6= ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2223:1: ( ( (lv_loopType_0_0= 'foreach' ) ) otherlv_1= '(' otherlv_2= 'var' ( (lv_controlVar_3_0= RULE_ID ) ) otherlv_4= 'in' ( (lv_condition_5_0= ruleExpression ) ) otherlv_6= ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2223:2: ( (lv_loopType_0_0= 'foreach' ) ) otherlv_1= '(' otherlv_2= 'var' ( (lv_controlVar_3_0= RULE_ID ) ) otherlv_4= 'in' ( (lv_condition_5_0= ruleExpression ) ) otherlv_6= ')' ( (lv_bodyStatement_7_0= ruleStatement ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2223:2: ( (lv_loopType_0_0= 'foreach' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2224:1: (lv_loopType_0_0= 'foreach' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2224:1: (lv_loopType_0_0= 'foreach' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2225:3: lv_loopType_0_0= 'foreach'
            {
            lv_loopType_0_0=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleForEachStatement5033); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_loopType_0_0, grammarAccess.getForEachStatementAccess().getLoopTypeForeachKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getForEachStatementRule());
              	        }
                     		setWithLastConsumed(current, "loopType", lv_loopType_0_0, "foreach");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleForEachStatement5058); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getForEachStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleForEachStatement5070); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getForEachStatementAccess().getVarKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2246:1: ( (lv_controlVar_3_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2247:1: (lv_controlVar_3_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2247:1: (lv_controlVar_3_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2248:3: lv_controlVar_3_0= RULE_ID
            {
            lv_controlVar_3_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleForEachStatement5087); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_controlVar_3_0, grammarAccess.getForEachStatementAccess().getControlVarIDTerminalRuleCall_3_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getForEachStatementRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"controlVar",
                      		lv_controlVar_3_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleForEachStatement5104); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getForEachStatementAccess().getInKeyword_4());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2268:1: ( (lv_condition_5_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2269:1: (lv_condition_5_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2269:1: (lv_condition_5_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2270:3: lv_condition_5_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForEachStatementAccess().getConditionExpressionParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleForEachStatement5125);
            lv_condition_5_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForEachStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_5_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleForEachStatement5137); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getForEachStatementAccess().getRightParenthesisKeyword_6());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2290:1: ( (lv_bodyStatement_7_0= ruleStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2291:1: (lv_bodyStatement_7_0= ruleStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2291:1: (lv_bodyStatement_7_0= ruleStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2292:3: lv_bodyStatement_7_0= ruleStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getForEachStatementAccess().getBodyStatementStatementParserRuleCall_7_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleForEachStatement5158);
            lv_bodyStatement_7_0=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getForEachStatementRule());
              	        }
                     		set(
                     			current, 
                     			"bodyStatement",
                      		lv_bodyStatement_7_0, 
                      		"Statement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForEachStatement"


    // $ANTLR start "entryRuleWhileStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2316:1: entryRuleWhileStatement returns [EObject current=null] : iv_ruleWhileStatement= ruleWhileStatement EOF ;
    public final EObject entryRuleWhileStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWhileStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2317:2: (iv_ruleWhileStatement= ruleWhileStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2318:2: iv_ruleWhileStatement= ruleWhileStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getWhileStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleWhileStatement_in_entryRuleWhileStatement5194);
            iv_ruleWhileStatement=ruleWhileStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleWhileStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWhileStatement5204); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleWhileStatement"


    // $ANTLR start "ruleWhileStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2325:1: ruleWhileStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'while' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) ) ;
    public final EObject ruleWhileStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_condition_2_0 = null;

        EObject lv_bodyStatement_4_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2328:28: ( ( ( (lv_loopType_0_0= 'while' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2329:1: ( ( (lv_loopType_0_0= 'while' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2329:1: ( ( (lv_loopType_0_0= 'while' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2329:2: ( (lv_loopType_0_0= 'while' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleExpression ) ) otherlv_3= ')' ( (lv_bodyStatement_4_0= ruleStatement ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2329:2: ( (lv_loopType_0_0= 'while' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2330:1: (lv_loopType_0_0= 'while' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2330:1: (lv_loopType_0_0= 'while' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2331:3: lv_loopType_0_0= 'while'
            {
            lv_loopType_0_0=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleWhileStatement5247); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_loopType_0_0, grammarAccess.getWhileStatementAccess().getLoopTypeWhileKeyword_0_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getWhileStatementRule());
              	        }
                     		setWithLastConsumed(current, "loopType", lv_loopType_0_0, "while");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleWhileStatement5272); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getWhileStatementAccess().getLeftParenthesisKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2348:1: ( (lv_condition_2_0= ruleExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2349:1: (lv_condition_2_0= ruleExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2349:1: (lv_condition_2_0= ruleExpression )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2350:3: lv_condition_2_0= ruleExpression
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getWhileStatementAccess().getConditionExpressionParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleWhileStatement5293);
            lv_condition_2_0=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getWhileStatementRule());
              	        }
                     		set(
                     			current, 
                     			"condition",
                      		lv_condition_2_0, 
                      		"Expression");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleWhileStatement5305); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getWhileStatementAccess().getRightParenthesisKeyword_3());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2370:1: ( (lv_bodyStatement_4_0= ruleStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2371:1: (lv_bodyStatement_4_0= ruleStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2371:1: (lv_bodyStatement_4_0= ruleStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2372:3: lv_bodyStatement_4_0= ruleStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getWhileStatementAccess().getBodyStatementStatementParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleWhileStatement5326);
            lv_bodyStatement_4_0=ruleStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getWhileStatementRule());
              	        }
                     		set(
                     			current, 
                     			"bodyStatement",
                      		lv_bodyStatement_4_0, 
                      		"Statement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleWhileStatement"


    // $ANTLR start "entryRuleForInitStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2396:1: entryRuleForInitStatement returns [EObject current=null] : iv_ruleForInitStatement= ruleForInitStatement EOF ;
    public final EObject entryRuleForInitStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForInitStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2397:2: (iv_ruleForInitStatement= ruleForInitStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2398:2: iv_ruleForInitStatement= ruleForInitStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getForInitStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForInitStatement_in_entryRuleForInitStatement5362);
            iv_ruleForInitStatement=ruleForInitStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleForInitStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForInitStatement5372); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForInitStatement"


    // $ANTLR start "ruleForInitStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2405:1: ruleForInitStatement returns [EObject current=null] : ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) ;
    public final EObject ruleForInitStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_children_0_1 = null;

        EObject lv_children_0_2 = null;

        EObject lv_children_2_1 = null;

        EObject lv_children_2_2 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2408:28: ( ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:1: ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:1: ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( ((LA38_0>=RULE_ID && LA38_0<=RULE_INT)||LA38_0==18||LA38_0==38||LA38_0==45||LA38_0==81||(LA38_0>=87 && LA38_0<=99)||(LA38_0>=106 && LA38_0<=107)) ) {
                alt38=1;
            }
            else if ( (LA38_0==14) ) {
                alt38=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 38, 0, input);

                throw nvae;
            }
            switch (alt38) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:2: ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:2: ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:3: ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2409:3: ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2410:1: ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2410:1: ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2411:1: (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2411:1: (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement )
                    int alt35=2;
                    int LA35_0 = input.LA(1);

                    if ( (LA35_0==38) ) {
                        alt35=1;
                    }
                    else if ( ((LA35_0>=RULE_ID && LA35_0<=RULE_INT)||LA35_0==18||LA35_0==45||LA35_0==81||(LA35_0>=87 && LA35_0<=99)||(LA35_0>=106 && LA35_0<=107)) ) {
                        alt35=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 35, 0, input);

                        throw nvae;
                    }
                    switch (alt35) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2412:3: lv_children_0_1= ruleDeclarationStatement
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenDeclarationStatementParserRuleCall_0_0_0_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement5421);
                            lv_children_0_1=ruleDeclarationStatement();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getForInitStatementRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_0_1, 
                                      		"DeclarationStatement");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2427:8: lv_children_0_2= ruleAssignStatement
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenAssignStatementParserRuleCall_0_0_0_1()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForInitStatement5440);
                            lv_children_0_2=ruleAssignStatement();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getForInitStatementRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_0_2, 
                                      		"AssignStatement");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2445:2: (otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )*
                    loop37:
                    do {
                        int alt37=2;
                        int LA37_0 = input.LA(1);

                        if ( (LA37_0==19) ) {
                            alt37=1;
                        }


                        switch (alt37) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2445:4: otherlv_1= ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) )
                    	    {
                    	    otherlv_1=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleForInitStatement5456); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_1, grammarAccess.getForInitStatementAccess().getCommaKeyword_0_1_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2449:1: ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2450:1: ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2450:1: ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2451:1: (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2451:1: (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement )
                    	    int alt36=2;
                    	    int LA36_0 = input.LA(1);

                    	    if ( (LA36_0==38) ) {
                    	        alt36=1;
                    	    }
                    	    else if ( ((LA36_0>=RULE_ID && LA36_0<=RULE_INT)||LA36_0==18||LA36_0==45||LA36_0==81||(LA36_0>=87 && LA36_0<=99)||(LA36_0>=106 && LA36_0<=107)) ) {
                    	        alt36=2;
                    	    }
                    	    else {
                    	        if (state.backtracking>0) {state.failed=true; return current;}
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 36, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt36) {
                    	        case 1 :
                    	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2452:3: lv_children_2_1= ruleDeclarationStatement
                    	            {
                    	            if ( state.backtracking==0 ) {
                    	               
                    	              	        newCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenDeclarationStatementParserRuleCall_0_1_1_0_0()); 
                    	              	    
                    	            }
                    	            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement5479);
                    	            lv_children_2_1=ruleDeclarationStatement();

                    	            state._fsp--;
                    	            if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElementForParent(grammarAccess.getForInitStatementRule());
                    	              	        }
                    	                     		add(
                    	                     			current, 
                    	                     			"children",
                    	                      		lv_children_2_1, 
                    	                      		"DeclarationStatement");
                    	              	        afterParserOrEnumRuleCall();
                    	              	    
                    	            }

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2467:8: lv_children_2_2= ruleAssignStatement
                    	            {
                    	            if ( state.backtracking==0 ) {
                    	               
                    	              	        newCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenAssignStatementParserRuleCall_0_1_1_0_1()); 
                    	              	    
                    	            }
                    	            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForInitStatement5498);
                    	            lv_children_2_2=ruleAssignStatement();

                    	            state._fsp--;
                    	            if (state.failed) return current;
                    	            if ( state.backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = createModelElementForParent(grammarAccess.getForInitStatementRule());
                    	              	        }
                    	                     		add(
                    	                     			current, 
                    	                     			"children",
                    	                      		lv_children_2_2, 
                    	                      		"AssignStatement");
                    	              	        afterParserOrEnumRuleCall();
                    	              	    
                    	            }

                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop37;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2486:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2486:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2487:1: (lv_children_3_0= ruleEmptyStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2487:1: (lv_children_3_0= ruleEmptyStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2488:3: lv_children_3_0= ruleEmptyStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenEmptyStatementParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleForInitStatement5531);
                    lv_children_3_0=ruleEmptyStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getForInitStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"EmptyStatement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForInitStatement"


    // $ANTLR start "entryRuleForPostStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2512:1: entryRuleForPostStatement returns [EObject current=null] : iv_ruleForPostStatement= ruleForPostStatement EOF ;
    public final EObject entryRuleForPostStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForPostStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2513:2: (iv_ruleForPostStatement= ruleForPostStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2514:2: iv_ruleForPostStatement= ruleForPostStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getForPostStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForPostStatement_in_entryRuleForPostStatement5567);
            iv_ruleForPostStatement=ruleForPostStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleForPostStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForPostStatement5577); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleForPostStatement"


    // $ANTLR start "ruleForPostStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2521:1: ruleForPostStatement returns [EObject current=null] : ( ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) ;
    public final EObject ruleForPostStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_children_0_0 = null;

        EObject lv_children_2_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2524:28: ( ( ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:1: ( ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:1: ( ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            int alt40=2;
            int LA40_0 = input.LA(1);

            if ( ((LA40_0>=RULE_ID && LA40_0<=RULE_INT)||LA40_0==18||LA40_0==45||LA40_0==81||(LA40_0>=87 && LA40_0<=99)||(LA40_0>=106 && LA40_0<=107)) ) {
                alt40=1;
            }
            else if ( (LA40_0==14) ) {
                alt40=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 40, 0, input);

                throw nvae;
            }
            switch (alt40) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:2: ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:2: ( ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:3: ( (lv_children_0_0= ruleAssignStatement ) ) (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2525:3: ( (lv_children_0_0= ruleAssignStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2526:1: (lv_children_0_0= ruleAssignStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2526:1: (lv_children_0_0= ruleAssignStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2527:3: lv_children_0_0= ruleAssignStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenAssignStatementParserRuleCall_0_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForPostStatement5624);
                    lv_children_0_0=ruleAssignStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getForPostStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_0_0, 
                              		"AssignStatement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2543:2: (otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) ) )*
                    loop39:
                    do {
                        int alt39=2;
                        int LA39_0 = input.LA(1);

                        if ( (LA39_0==19) ) {
                            alt39=1;
                        }


                        switch (alt39) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2543:4: otherlv_1= ',' ( (lv_children_2_0= ruleAssignStatement ) )
                    	    {
                    	    otherlv_1=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleForPostStatement5637); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_1, grammarAccess.getForPostStatementAccess().getCommaKeyword_0_1_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2547:1: ( (lv_children_2_0= ruleAssignStatement ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2548:1: (lv_children_2_0= ruleAssignStatement )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2548:1: (lv_children_2_0= ruleAssignStatement )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2549:3: lv_children_2_0= ruleAssignStatement
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenAssignStatementParserRuleCall_0_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForPostStatement5658);
                    	    lv_children_2_0=ruleAssignStatement();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getForPostStatementRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_2_0, 
                    	              		"AssignStatement");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop39;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2566:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2566:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2567:1: (lv_children_3_0= ruleEmptyStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2567:1: (lv_children_3_0= ruleEmptyStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2568:3: lv_children_3_0= ruleEmptyStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenEmptyStatementParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleForPostStatement5688);
                    lv_children_3_0=ruleEmptyStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getForPostStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"EmptyStatement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleForPostStatement"


    // $ANTLR start "entryRuleAssignStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2592:1: entryRuleAssignStatement returns [EObject current=null] : iv_ruleAssignStatement= ruleAssignStatement EOF ;
    public final EObject entryRuleAssignStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignStatement = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2593:2: (iv_ruleAssignStatement= ruleAssignStatement EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2594:2: iv_ruleAssignStatement= ruleAssignStatement EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssignStatementRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_entryRuleAssignStatement5724);
            iv_ruleAssignStatement=ruleAssignStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssignStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAssignStatement5734); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignStatement"


    // $ANTLR start "ruleAssignStatement"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2601:1: ruleAssignStatement returns [EObject current=null] : (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) ;
    public final EObject ruleAssignStatement() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_BooleanExpression_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2604:28: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2605:1: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2605:1: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2606:5: this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAssignStatementAccess().getBooleanExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleAssignStatement5781);
            this_BooleanExpression_0=ruleBooleanExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_BooleanExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2614:1: ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==23) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2614:2: () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2614:2: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2615:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndAdd(
                                  grammarAccess.getAssignStatementAccess().getExpressionChildrenAction_1_0(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2620:2: ( (lv_operator_2_0= '=' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2621:1: (lv_operator_2_0= '=' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2621:1: (lv_operator_2_0= '=' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2622:3: lv_operator_2_0= '='
                    {
                    lv_operator_2_0=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleAssignStatement5808); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_2_0, grammarAccess.getAssignStatementAccess().getOperatorEqualsSignKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getAssignStatementRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_2_0, "=");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2635:2: ( (lv_children_3_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2636:1: (lv_children_3_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2636:1: (lv_children_3_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2637:3: lv_children_3_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getAssignStatementAccess().getChildrenExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleAssignStatement5842);
                    lv_children_3_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getAssignStatementRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignStatement"


    // $ANTLR start "entryRuleArgument"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2661:1: entryRuleArgument returns [EObject current=null] : iv_ruleArgument= ruleArgument EOF ;
    public final EObject entryRuleArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArgument = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2662:2: (iv_ruleArgument= ruleArgument EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2663:2: iv_ruleArgument= ruleArgument EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getArgumentRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_entryRuleArgument5880);
            iv_ruleArgument=ruleArgument();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleArgument5890); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArgument"


    // $ANTLR start "ruleArgument"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2670:1: ruleArgument returns [EObject current=null] : ( () ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )? ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) ) ) ;
    public final EObject ruleArgument() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_value_3_0 = null;

        EObject lv_children_6_0 = null;

        EObject lv_children_8_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2673:28: ( ( () ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )? ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2674:1: ( () ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )? ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2674:1: ( () ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )? ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2674:2: () ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )? ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2674:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2675:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getArgumentAccess().getArgumentAction_0(),
                          current);
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2680:2: ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )?
            int alt42=2;
            alt42 = dfa42.predict(input);
            switch (alt42) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2680:3: ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '='
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2680:3: ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2680:4: ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2685:1: (lv_name_1_0= ruleDotQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2686:3: lv_name_1_0= ruleDotQualifiedID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getArgumentAccess().getNameDotQualifiedIDParserRuleCall_1_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleArgument5956);
                    lv_name_1_0=ruleDotQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                      	        }
                             		set(
                             			current, 
                             			"name",
                              		lv_name_1_0, 
                              		"DotQualifiedID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleArgument5968); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getArgumentAccess().getEqualsSignKeyword_1_1());
                          
                    }

                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2706:3: ( ( (lv_value_3_0= ruleExpression ) ) | (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' ) )
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( ((LA45_0>=RULE_ID && LA45_0<=RULE_INT)||LA45_0==18||LA45_0==33||(LA45_0>=44 && LA45_0<=45)||LA45_0==63||LA45_0==81||(LA45_0>=87 && LA45_0<=99)||(LA45_0>=106 && LA45_0<=107)) ) {
                alt45=1;
            }
            else if ( (LA45_0==60) ) {
                alt45=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }
            switch (alt45) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2706:4: ( (lv_value_3_0= ruleExpression ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2706:4: ( (lv_value_3_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2707:1: (lv_value_3_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2707:1: (lv_value_3_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2708:3: lv_value_3_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getArgumentAccess().getValueExpressionParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleArgument5992);
                    lv_value_3_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2725:6: (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2725:6: (otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2725:8: otherlv_4= 'struct' otherlv_5= '{' ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )? otherlv_9= '}'
                    {
                    otherlv_4=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleArgument6011); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getArgumentAccess().getStructKeyword_2_1_0());
                          
                    }
                    otherlv_5=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleArgument6023); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getArgumentAccess().getLeftCurlyBracketKeyword_2_1_1());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2733:1: ( ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )* )?
                    int alt44=2;
                    int LA44_0 = input.LA(1);

                    if ( ((LA44_0>=RULE_ID && LA44_0<=RULE_INT)||LA44_0==18||LA44_0==33||(LA44_0>=44 && LA44_0<=45)||LA44_0==60||LA44_0==63||LA44_0==81||(LA44_0>=87 && LA44_0<=99)||(LA44_0>=106 && LA44_0<=107)) ) {
                        alt44=1;
                    }
                    switch (alt44) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2733:2: ( (lv_children_6_0= ruleArgument ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )*
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2733:2: ( (lv_children_6_0= ruleArgument ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2734:1: (lv_children_6_0= ruleArgument )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2734:1: (lv_children_6_0= ruleArgument )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2735:3: lv_children_6_0= ruleArgument
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getArgumentAccess().getChildrenArgumentParserRuleCall_2_1_2_0_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleArgument6045);
                            lv_children_6_0=ruleArgument();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_6_0, 
                                      		"Argument");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2751:2: (otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) ) )*
                            loop43:
                            do {
                                int alt43=2;
                                int LA43_0 = input.LA(1);

                                if ( (LA43_0==19) ) {
                                    alt43=1;
                                }


                                switch (alt43) {
                            	case 1 :
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2751:4: otherlv_7= ',' ( (lv_children_8_0= ruleArgument ) )
                            	    {
                            	    otherlv_7=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleArgument6058); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_7, grammarAccess.getArgumentAccess().getCommaKeyword_2_1_2_1_0());
                            	          
                            	    }
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2755:1: ( (lv_children_8_0= ruleArgument ) )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2756:1: (lv_children_8_0= ruleArgument )
                            	    {
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2756:1: (lv_children_8_0= ruleArgument )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2757:3: lv_children_8_0= ruleArgument
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getArgumentAccess().getChildrenArgumentParserRuleCall_2_1_2_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleArgument6079);
                            	    lv_children_8_0=ruleArgument();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"children",
                            	              		lv_children_8_0, 
                            	              		"Argument");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop43;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_9=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleArgument6095); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_9, grammarAccess.getArgumentAccess().getRightCurlyBracketKeyword_2_1_3());
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArgument"


    // $ANTLR start "entryRuleExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2785:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
    public final EObject entryRuleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2786:2: (iv_ruleExpression= ruleExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2787:2: iv_ruleExpression= ruleExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_entryRuleExpression6133);
            iv_ruleExpression=ruleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpression6143); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExpression"


    // $ANTLR start "ruleExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2794:1: ruleExpression returns [EObject current=null] : (this_TernaryExpression_0= ruleTernaryExpression | this_ArrayExpression_1= ruleArrayExpression | this_StatementExpression_2= ruleStatementExpression ) ;
    public final EObject ruleExpression() throws RecognitionException {
        EObject current = null;

        EObject this_TernaryExpression_0 = null;

        EObject this_ArrayExpression_1 = null;

        EObject this_StatementExpression_2 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2797:28: ( (this_TernaryExpression_0= ruleTernaryExpression | this_ArrayExpression_1= ruleArrayExpression | this_StatementExpression_2= ruleStatementExpression ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2798:1: (this_TernaryExpression_0= ruleTernaryExpression | this_ArrayExpression_1= ruleArrayExpression | this_StatementExpression_2= ruleStatementExpression )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2798:1: (this_TernaryExpression_0= ruleTernaryExpression | this_ArrayExpression_1= ruleArrayExpression | this_StatementExpression_2= ruleStatementExpression )
            int alt46=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
            case RULE_STRING:
            case RULE_VERBATIM_STRING:
            case RULE_INT:
            case 18:
            case 44:
            case 45:
            case 81:
            case 87:
            case 88:
            case 89:
            case 90:
            case 91:
            case 92:
            case 93:
            case 94:
            case 95:
            case 96:
            case 97:
            case 98:
            case 99:
            case 106:
            case 107:
                {
                alt46=1;
                }
                break;
            case 33:
                {
                alt46=2;
                }
                break;
            case 63:
                {
                alt46=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }

            switch (alt46) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2799:5: this_TernaryExpression_0= ruleTernaryExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExpressionAccess().getTernaryExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleTernaryExpression_in_ruleExpression6190);
                    this_TernaryExpression_0=ruleTernaryExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TernaryExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2809:5: this_ArrayExpression_1= ruleArrayExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExpressionAccess().getArrayExpressionParserRuleCall_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArrayExpression_in_ruleExpression6217);
                    this_ArrayExpression_1=ruleArrayExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ArrayExpression_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2819:5: this_StatementExpression_2= ruleStatementExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExpressionAccess().getStatementExpressionParserRuleCall_2()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatementExpression_in_ruleExpression6244);
                    this_StatementExpression_2=ruleStatementExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_StatementExpression_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExpression"


    // $ANTLR start "entryRuleTernaryExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2835:1: entryRuleTernaryExpression returns [EObject current=null] : iv_ruleTernaryExpression= ruleTernaryExpression EOF ;
    public final EObject entryRuleTernaryExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTernaryExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2836:2: (iv_ruleTernaryExpression= ruleTernaryExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2837:2: iv_ruleTernaryExpression= ruleTernaryExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTernaryExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleTernaryExpression_in_entryRuleTernaryExpression6279);
            iv_ruleTernaryExpression=ruleTernaryExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTernaryExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTernaryExpression6289); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTernaryExpression"


    // $ANTLR start "ruleTernaryExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2844:1: ruleTernaryExpression returns [EObject current=null] : (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )? ) ;
    public final EObject ruleTernaryExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        Token otherlv_4=null;
        EObject this_SimpleExpression_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2847:28: ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2848:1: (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2848:1: (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2849:5: this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getTernaryExpressionAccess().getSimpleExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_ruleTernaryExpression6336);
            this_SimpleExpression_0=ruleSimpleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SimpleExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2857:1: ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) ) )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==61) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2857:2: () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) otherlv_4= ':' ( (lv_children_5_0= ruleExpression ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2857:2: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2858:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndAdd(
                                  grammarAccess.getTernaryExpressionAccess().getExpressionChildrenAction_1_0(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2863:2: ( (lv_operator_2_0= '?' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2864:1: (lv_operator_2_0= '?' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2864:1: (lv_operator_2_0= '?' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2865:3: lv_operator_2_0= '?'
                    {
                    lv_operator_2_0=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleTernaryExpression6363); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_2_0, grammarAccess.getTernaryExpressionAccess().getOperatorQuestionMarkKeyword_1_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTernaryExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_2_0, "?");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2878:2: ( (lv_children_3_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2879:1: (lv_children_3_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2879:1: (lv_children_3_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2880:3: lv_children_3_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTernaryExpressionAccess().getChildrenExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleTernaryExpression6397);
                    lv_children_3_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTernaryExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_4=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleTernaryExpression6409); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getTernaryExpressionAccess().getColonKeyword_1_3());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2900:1: ( (lv_children_5_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2901:1: (lv_children_5_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2901:1: (lv_children_5_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2902:3: lv_children_5_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTernaryExpressionAccess().getChildrenExpressionParserRuleCall_1_4_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleTernaryExpression6430);
                    lv_children_5_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTernaryExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_5_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTernaryExpression"


    // $ANTLR start "entryRuleSimpleExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2926:1: entryRuleSimpleExpression returns [EObject current=null] : iv_ruleSimpleExpression= ruleSimpleExpression EOF ;
    public final EObject entryRuleSimpleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2927:2: (iv_ruleSimpleExpression= ruleSimpleExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2928:2: iv_ruleSimpleExpression= ruleSimpleExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSimpleExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_entryRuleSimpleExpression6468);
            iv_ruleSimpleExpression=ruleSimpleExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSimpleExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSimpleExpression6478); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleExpression"


    // $ANTLR start "ruleSimpleExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2935:1: ruleSimpleExpression returns [EObject current=null] : ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement ) ;
    public final EObject ruleSimpleExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_BooleanExpression_0 = null;

        EObject lv_children_3_0 = null;

        EObject this_MatchStatement_4 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2938:28: ( ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2939:1: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2939:1: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement )
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( ((LA49_0>=RULE_ID && LA49_0<=RULE_INT)||LA49_0==18||LA49_0==45||LA49_0==81||(LA49_0>=87 && LA49_0<=99)||(LA49_0>=106 && LA49_0<=107)) ) {
                alt49=1;
            }
            else if ( (LA49_0==44) ) {
                alt49=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 49, 0, input);

                throw nvae;
            }
            switch (alt49) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2939:2: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2939:2: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2940:5: this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleExpressionAccess().getBooleanExpressionParserRuleCall_0_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleSimpleExpression6526);
                    this_BooleanExpression_0=ruleBooleanExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2948:1: ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
                    int alt48=2;
                    int LA48_0 = input.LA(1);

                    if ( (LA48_0==23) ) {
                        alt48=1;
                    }
                    switch (alt48) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2948:2: () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2948:2: ()
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2949:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndAdd(
                                          grammarAccess.getSimpleExpressionAccess().getExpressionChildrenAction_0_1_0(),
                                          current);
                                  
                            }

                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2954:2: ( (lv_operator_2_0= '=' ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2955:1: (lv_operator_2_0= '=' )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2955:1: (lv_operator_2_0= '=' )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2956:3: lv_operator_2_0= '='
                            {
                            lv_operator_2_0=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleSimpleExpression6553); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_0, grammarAccess.getSimpleExpressionAccess().getOperatorEqualsSignKeyword_0_1_1_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getSimpleExpressionRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_0, "=");
                              	    
                            }

                            }


                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2969:2: ( (lv_children_3_0= ruleExpression ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2970:1: (lv_children_3_0= ruleExpression )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2970:1: (lv_children_3_0= ruleExpression )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2971:3: lv_children_3_0= ruleExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSimpleExpressionAccess().getChildrenExpressionParserRuleCall_0_1_2_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleExpression6587);
                            lv_children_3_0=ruleExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSimpleExpressionRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_3_0, 
                                      		"Expression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2989:5: this_MatchStatement_4= ruleMatchStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleExpressionAccess().getMatchStatementParserRuleCall_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleMatchStatement_in_ruleSimpleExpression6618);
                    this_MatchStatement_4=ruleMatchStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_MatchStatement_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleExpression"


    // $ANTLR start "entryRuleArrayExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3005:1: entryRuleArrayExpression returns [EObject current=null] : iv_ruleArrayExpression= ruleArrayExpression EOF ;
    public final EObject entryRuleArrayExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3006:2: (iv_ruleArrayExpression= ruleArrayExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3007:2: iv_ruleArrayExpression= ruleArrayExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getArrayExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleArrayExpression_in_entryRuleArrayExpression6653);
            iv_ruleArrayExpression=ruleArrayExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleArrayExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleArrayExpression6663); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleArrayExpression"


    // $ANTLR start "ruleArrayExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3014:1: ruleArrayExpression returns [EObject current=null] : ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )? otherlv_5= '}' ) ;
    public final EObject ruleArrayExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_children_2_0 = null;

        EObject lv_children_4_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3017:28: ( ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )? otherlv_5= '}' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3018:1: ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )? otherlv_5= '}' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3018:1: ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )? otherlv_5= '}' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3018:2: () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )? otherlv_5= '}'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3018:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3019:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getArrayExpressionAccess().getExpressionAction_0(),
                          current);
                  
            }

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3024:2: ( (lv_operator_1_0= '{' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3025:1: (lv_operator_1_0= '{' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3025:1: (lv_operator_1_0= '{' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3026:3: lv_operator_1_0= '{'
            {
            lv_operator_1_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleArrayExpression6715); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      newLeafNode(lv_operator_1_0, grammarAccess.getArrayExpressionAccess().getOperatorLeftCurlyBracketKeyword_1_0());
                  
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getArrayExpressionRule());
              	        }
                     		setWithLastConsumed(current, "operator", lv_operator_1_0, "{");
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3039:2: ( ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )* )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( ((LA51_0>=RULE_ID && LA51_0<=RULE_INT)||LA51_0==18||LA51_0==33||(LA51_0>=44 && LA51_0<=45)||LA51_0==63||LA51_0==81||(LA51_0>=87 && LA51_0<=99)||(LA51_0>=106 && LA51_0<=107)) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3039:3: ( (lv_children_2_0= ruleExpression ) ) (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3039:3: ( (lv_children_2_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3040:1: (lv_children_2_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3040:1: (lv_children_2_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3041:3: lv_children_2_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getArrayExpressionAccess().getChildrenExpressionParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleArrayExpression6750);
                    lv_children_2_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getArrayExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_2_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3057:2: (otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) ) )*
                    loop50:
                    do {
                        int alt50=2;
                        int LA50_0 = input.LA(1);

                        if ( (LA50_0==19) ) {
                            alt50=1;
                        }


                        switch (alt50) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3057:4: otherlv_3= ',' ( (lv_children_4_0= ruleExpression ) )
                    	    {
                    	    otherlv_3=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleArrayExpression6763); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getArrayExpressionAccess().getCommaKeyword_2_1_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3061:1: ( (lv_children_4_0= ruleExpression ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3062:1: (lv_children_4_0= ruleExpression )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3062:1: (lv_children_4_0= ruleExpression )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3063:3: lv_children_4_0= ruleExpression
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getArrayExpressionAccess().getChildrenExpressionParserRuleCall_2_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleArrayExpression6784);
                    	    lv_children_4_0=ruleExpression();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getArrayExpressionRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_4_0, 
                    	              		"Expression");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop50;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_5=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleArrayExpression6800); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getArrayExpressionAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleArrayExpression"


    // $ANTLR start "entryRulePatternExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3091:1: entryRulePatternExpression returns [EObject current=null] : iv_rulePatternExpression= rulePatternExpression EOF ;
    public final EObject entryRulePatternExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3092:2: (iv_rulePatternExpression= rulePatternExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3093:2: iv_rulePatternExpression= rulePatternExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPatternExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_entryRulePatternExpression6836);
            iv_rulePatternExpression=rulePatternExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePatternExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternExpression6846); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePatternExpression"


    // $ANTLR start "rulePatternExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3100:1: rulePatternExpression returns [EObject current=null] : ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' ) ) ;
    public final EObject rulePatternExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_children_0_0 = null;

        EObject lv_children_4_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3103:28: ( ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3104:1: ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3104:1: ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' ) )
            int alt52=3;
            switch ( input.LA(1) ) {
            case 16:
                {
                alt52=1;
                }
                break;
            case RULE_ID:
                {
                alt52=2;
                }
                break;
            case 62:
                {
                alt52=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 52, 0, input);

                throw nvae;
            }

            switch (alt52) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3104:2: ( (lv_children_0_0= rulePatternDeclaration ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3104:2: ( (lv_children_0_0= rulePatternDeclaration ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3105:1: (lv_children_0_0= rulePatternDeclaration )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3105:1: (lv_children_0_0= rulePatternDeclaration )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3106:3: lv_children_0_0= rulePatternDeclaration
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternExpressionAccess().getChildrenPatternDeclarationParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_rulePatternExpression6892);
                    lv_children_0_0=rulePatternDeclaration();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_0_0, 
                              		"PatternDeclaration");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3123:6: ( ( ruleQualifiedID ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3123:6: ( ( ruleQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3124:1: ( ruleQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3124:1: ( ruleQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3125:3: ruleQualifiedID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getPatternExpressionRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternExpressionAccess().getRefsDeslPatternCrossReference_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_rulePatternExpression6921);
                    ruleQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3139:6: ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3139:6: ( ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3139:7: ( (lv_operator_2_0= 'evaluate' ) ) otherlv_3= '(' ( (lv_children_4_0= ruleExpression ) ) otherlv_5= ')'
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3139:7: ( (lv_operator_2_0= 'evaluate' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3140:1: (lv_operator_2_0= 'evaluate' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3140:1: (lv_operator_2_0= 'evaluate' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3141:3: lv_operator_2_0= 'evaluate'
                    {
                    lv_operator_2_0=(Token)match(input,62,FollowSets000.FOLLOW_62_in_rulePatternExpression6946); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_2_0, grammarAccess.getPatternExpressionAccess().getOperatorEvaluateKeyword_2_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getPatternExpressionRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_2_0, "evaluate");
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,18,FollowSets000.FOLLOW_18_in_rulePatternExpression6971); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getPatternExpressionAccess().getLeftParenthesisKeyword_2_1());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3158:1: ( (lv_children_4_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3159:1: (lv_children_4_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3159:1: (lv_children_4_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3160:3: lv_children_4_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternExpressionAccess().getChildrenExpressionParserRuleCall_2_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rulePatternExpression6992);
                    lv_children_4_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternExpressionRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_4_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_5=(Token)match(input,20,FollowSets000.FOLLOW_20_in_rulePatternExpression7004); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getPatternExpressionAccess().getRightParenthesisKeyword_2_3());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePatternExpression"


    // $ANTLR start "entryRuleStatementExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3188:1: entryRuleStatementExpression returns [EObject current=null] : iv_ruleStatementExpression= ruleStatementExpression EOF ;
    public final EObject entryRuleStatementExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatementExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3189:2: (iv_ruleStatementExpression= ruleStatementExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3190:2: iv_ruleStatementExpression= ruleStatementExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getStatementExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatementExpression_in_entryRuleStatementExpression7041);
            iv_ruleStatementExpression=ruleStatementExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleStatementExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStatementExpression7051); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatementExpression"


    // $ANTLR start "ruleStatementExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3197:1: ruleStatementExpression returns [EObject current=null] : ( () otherlv_1= 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) ) ;
    public final EObject ruleStatementExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_children_2_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3200:28: ( ( () otherlv_1= 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3201:1: ( () otherlv_1= 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3201:1: ( () otherlv_1= 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3201:2: () otherlv_1= 'statement' ( (lv_children_2_0= ruleCompositeStatement ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3201:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3202:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getStatementExpressionAccess().getStatementExpressionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,63,FollowSets000.FOLLOW_63_in_ruleStatementExpression7097); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getStatementExpressionAccess().getStatementKeyword_1());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3211:1: ( (lv_children_2_0= ruleCompositeStatement ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3212:1: (lv_children_2_0= ruleCompositeStatement )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3212:1: (lv_children_2_0= ruleCompositeStatement )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3213:3: lv_children_2_0= ruleCompositeStatement
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getStatementExpressionAccess().getChildrenCompositeStatementParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_ruleStatementExpression7118);
            lv_children_2_0=ruleCompositeStatement();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getStatementExpressionRule());
              	        }
                     		add(
                     			current, 
                     			"children",
                      		lv_children_2_0, 
                      		"CompositeStatement");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatementExpression"


    // $ANTLR start "entryRuleBooleanExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3237:1: entryRuleBooleanExpression returns [EObject current=null] : iv_ruleBooleanExpression= ruleBooleanExpression EOF ;
    public final EObject entryRuleBooleanExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3238:2: (iv_ruleBooleanExpression= ruleBooleanExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3239:2: iv_ruleBooleanExpression= ruleBooleanExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression7154);
            iv_ruleBooleanExpression=ruleBooleanExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanExpression7164); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanExpression"


    // $ANTLR start "ruleBooleanExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3246:1: ruleBooleanExpression returns [EObject current=null] : (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* ) ;
    public final EObject ruleBooleanExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        EObject this_BooleanTerm_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3249:28: ( (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3250:1: (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3250:1: (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3251:5: this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getBooleanExpressionAccess().getBooleanTermParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression7211);
            this_BooleanTerm_0=ruleBooleanTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_BooleanTerm_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3259:1: ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )*
            loop54:
            do {
                int alt54=2;
                int LA54_0 = input.LA(1);

                if ( (LA54_0==64) ) {
                    alt54=1;
                }
                else if ( (LA54_0==65) ) {
                    alt54=1;
                }


                switch (alt54) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3259:2: () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3259:2: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3260:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getBooleanExpressionAccess().getExpressionChildrenAction_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3265:2: ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3266:1: ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3266:1: ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3267:1: (lv_operator_2_1= '&&' | lv_operator_2_2= '||' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3267:1: (lv_operator_2_1= '&&' | lv_operator_2_2= '||' )
            	    int alt53=2;
            	    int LA53_0 = input.LA(1);

            	    if ( (LA53_0==64) ) {
            	        alt53=1;
            	    }
            	    else if ( (LA53_0==65) ) {
            	        alt53=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 53, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt53) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3268:3: lv_operator_2_1= '&&'
            	            {
            	            lv_operator_2_1=(Token)match(input,64,FollowSets000.FOLLOW_64_in_ruleBooleanExpression7240); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_1, grammarAccess.getBooleanExpressionAccess().getOperatorAmpersandAmpersandKeyword_1_1_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getBooleanExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_1, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3280:8: lv_operator_2_2= '||'
            	            {
            	            lv_operator_2_2=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleBooleanExpression7269); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_2, grammarAccess.getBooleanExpressionAccess().getOperatorVerticalLineVerticalLineKeyword_1_1_0_1());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getBooleanExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_2, null);
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3295:2: ( (lv_children_3_0= ruleBooleanTerm ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3296:1: (lv_children_3_0= ruleBooleanTerm )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3296:1: (lv_children_3_0= ruleBooleanTerm )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3297:3: lv_children_3_0= ruleBooleanTerm
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getBooleanExpressionAccess().getChildrenBooleanTermParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression7306);
            	    lv_children_3_0=ruleBooleanTerm();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getBooleanExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"BooleanTerm");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop54;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanExpression"


    // $ANTLR start "entryRuleBooleanTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3321:1: entryRuleBooleanTerm returns [EObject current=null] : iv_ruleBooleanTerm= ruleBooleanTerm EOF ;
    public final EObject entryRuleBooleanTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanTerm = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3322:2: (iv_ruleBooleanTerm= ruleBooleanTerm EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3323:2: iv_ruleBooleanTerm= ruleBooleanTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanTermRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_entryRuleBooleanTerm7344);
            iv_ruleBooleanTerm=ruleBooleanTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanTerm7354); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanTerm"


    // $ANTLR start "ruleBooleanTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3330:1: ruleBooleanTerm returns [EObject current=null] : (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) ;
    public final EObject ruleBooleanTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        Token lv_operator_2_5=null;
        Token lv_operator_2_6=null;
        EObject this_AdditionExpression_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3333:28: ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3334:1: (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3334:1: (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3335:5: this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )?
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getBooleanTermAccess().getAdditionExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm7401);
            this_AdditionExpression_0=ruleAdditionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_AdditionExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3343:1: ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )?
            int alt56=2;
            switch ( input.LA(1) ) {
                case 66:
                    {
                    alt56=1;
                    }
                    break;
                case 67:
                    {
                    alt56=1;
                    }
                    break;
                case 68:
                    {
                    alt56=1;
                    }
                    break;
                case 69:
                    {
                    alt56=1;
                    }
                    break;
                case 70:
                    {
                    alt56=1;
                    }
                    break;
                case 71:
                    {
                    alt56=1;
                    }
                    break;
            }

            switch (alt56) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3343:2: () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3343:2: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3344:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElementAndAdd(
                                  grammarAccess.getBooleanTermAccess().getExpressionChildrenAction_1_0(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3349:2: ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3350:1: ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3350:1: ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3351:1: (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3351:1: (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' )
                    int alt55=6;
                    switch ( input.LA(1) ) {
                    case 66:
                        {
                        alt55=1;
                        }
                        break;
                    case 67:
                        {
                        alt55=2;
                        }
                        break;
                    case 68:
                        {
                        alt55=3;
                        }
                        break;
                    case 69:
                        {
                        alt55=4;
                        }
                        break;
                    case 70:
                        {
                        alt55=5;
                        }
                        break;
                    case 71:
                        {
                        alt55=6;
                        }
                        break;
                    default:
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 55, 0, input);

                        throw nvae;
                    }

                    switch (alt55) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3352:3: lv_operator_2_1= '>'
                            {
                            lv_operator_2_1=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleBooleanTerm7430); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_1, grammarAccess.getBooleanTermAccess().getOperatorGreaterThanSignKeyword_1_1_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3364:8: lv_operator_2_2= '<'
                            {
                            lv_operator_2_2=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleBooleanTerm7459); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_2, grammarAccess.getBooleanTermAccess().getOperatorLessThanSignKeyword_1_1_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_2, null);
                              	    
                            }

                            }
                            break;
                        case 3 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3376:8: lv_operator_2_3= '<='
                            {
                            lv_operator_2_3=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleBooleanTerm7488); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_3, grammarAccess.getBooleanTermAccess().getOperatorLessThanSignEqualsSignKeyword_1_1_0_2());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_3, null);
                              	    
                            }

                            }
                            break;
                        case 4 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3388:8: lv_operator_2_4= '>='
                            {
                            lv_operator_2_4=(Token)match(input,69,FollowSets000.FOLLOW_69_in_ruleBooleanTerm7517); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_4, grammarAccess.getBooleanTermAccess().getOperatorGreaterThanSignEqualsSignKeyword_1_1_0_3());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_4, null);
                              	    
                            }

                            }
                            break;
                        case 5 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3400:8: lv_operator_2_5= '=='
                            {
                            lv_operator_2_5=(Token)match(input,70,FollowSets000.FOLLOW_70_in_ruleBooleanTerm7546); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_5, grammarAccess.getBooleanTermAccess().getOperatorEqualsSignEqualsSignKeyword_1_1_0_4());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_5, null);
                              	    
                            }

                            }
                            break;
                        case 6 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3412:8: lv_operator_2_6= '!='
                            {
                            lv_operator_2_6=(Token)match(input,71,FollowSets000.FOLLOW_71_in_ruleBooleanTerm7575); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_2_6, grammarAccess.getBooleanTermAccess().getOperatorExclamationMarkEqualsSignKeyword_1_1_0_5());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getBooleanTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_2_6, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3427:2: ( (lv_children_3_0= ruleAdditionExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3428:1: (lv_children_3_0= ruleAdditionExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3428:1: (lv_children_3_0= ruleAdditionExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3429:3: lv_children_3_0= ruleAdditionExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getBooleanTermAccess().getChildrenAdditionExpressionParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm7612);
                    lv_children_3_0=ruleAdditionExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getBooleanTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"AdditionExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanTerm"


    // $ANTLR start "entryRuleAdditionExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3453:1: entryRuleAdditionExpression returns [EObject current=null] : iv_ruleAdditionExpression= ruleAdditionExpression EOF ;
    public final EObject entryRuleAdditionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdditionExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3454:2: (iv_ruleAdditionExpression= ruleAdditionExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3455:2: iv_ruleAdditionExpression= ruleAdditionExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAdditionExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_entryRuleAdditionExpression7650);
            iv_ruleAdditionExpression=ruleAdditionExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAdditionExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAdditionExpression7660); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAdditionExpression"


    // $ANTLR start "ruleAdditionExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3462:1: ruleAdditionExpression returns [EObject current=null] : (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* ) ;
    public final EObject ruleAdditionExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        EObject this_MulExpression_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3465:28: ( (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3466:1: (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3466:1: (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3467:5: this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getAdditionExpressionAccess().getMulExpressionParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_ruleAdditionExpression7707);
            this_MulExpression_0=ruleMulExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_MulExpression_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3475:1: ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )*
            loop58:
            do {
                int alt58=2;
                switch ( input.LA(1) ) {
                case 72:
                    {
                    alt58=1;
                    }
                    break;
                case 73:
                    {
                    alt58=1;
                    }
                    break;
                case 74:
                    {
                    alt58=1;
                    }
                    break;
                case 75:
                    {
                    alt58=1;
                    }
                    break;

                }

                switch (alt58) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3475:2: () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) ) ( (lv_children_3_0= ruleMulExpression ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3475:2: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3476:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getAdditionExpressionAccess().getExpressionChildrenAction_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3481:2: ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3482:1: ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3482:1: ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3483:1: (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3483:1: (lv_operator_2_1= '+' | lv_operator_2_2= '-' | lv_operator_2_3= '|' | lv_operator_2_4= '&' )
            	    int alt57=4;
            	    switch ( input.LA(1) ) {
            	    case 72:
            	        {
            	        alt57=1;
            	        }
            	        break;
            	    case 73:
            	        {
            	        alt57=2;
            	        }
            	        break;
            	    case 74:
            	        {
            	        alt57=3;
            	        }
            	        break;
            	    case 75:
            	        {
            	        alt57=4;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 57, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt57) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3484:3: lv_operator_2_1= '+'
            	            {
            	            lv_operator_2_1=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleAdditionExpression7736); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_1, grammarAccess.getAdditionExpressionAccess().getOperatorPlusSignKeyword_1_1_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getAdditionExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_1, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3496:8: lv_operator_2_2= '-'
            	            {
            	            lv_operator_2_2=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleAdditionExpression7765); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_2, grammarAccess.getAdditionExpressionAccess().getOperatorHyphenMinusKeyword_1_1_0_1());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getAdditionExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_2, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3508:8: lv_operator_2_3= '|'
            	            {
            	            lv_operator_2_3=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleAdditionExpression7794); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_3, grammarAccess.getAdditionExpressionAccess().getOperatorVerticalLineKeyword_1_1_0_2());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getAdditionExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_3, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3520:8: lv_operator_2_4= '&'
            	            {
            	            lv_operator_2_4=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleAdditionExpression7823); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_4, grammarAccess.getAdditionExpressionAccess().getOperatorAmpersandKeyword_1_1_0_3());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getAdditionExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_4, null);
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3535:2: ( (lv_children_3_0= ruleMulExpression ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3536:1: (lv_children_3_0= ruleMulExpression )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3536:1: (lv_children_3_0= ruleMulExpression )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3537:3: lv_children_3_0= ruleMulExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAdditionExpressionAccess().getChildrenMulExpressionParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_ruleAdditionExpression7860);
            	    lv_children_3_0=ruleMulExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAdditionExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"MulExpression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop58;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAdditionExpression"


    // $ANTLR start "entryRuleMulExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3561:1: entryRuleMulExpression returns [EObject current=null] : iv_ruleMulExpression= ruleMulExpression EOF ;
    public final EObject entryRuleMulExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMulExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3562:2: (iv_ruleMulExpression= ruleMulExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3563:2: iv_ruleMulExpression= ruleMulExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getMulExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_entryRuleMulExpression7898);
            iv_ruleMulExpression=ruleMulExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleMulExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMulExpression7908); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMulExpression"


    // $ANTLR start "ruleMulExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3570:1: ruleMulExpression returns [EObject current=null] : (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* ) ;
    public final EObject ruleMulExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        Token lv_operator_2_5=null;
        EObject this_Term_0 = null;

        EObject lv_children_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3573:28: ( (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3574:1: (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3574:1: (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3575:5: this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getMulExpressionAccess().getTermParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleMulExpression7955);
            this_Term_0=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_Term_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3583:1: ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )*
            loop60:
            do {
                int alt60=2;
                switch ( input.LA(1) ) {
                case 76:
                    {
                    alt60=1;
                    }
                    break;
                case 77:
                    {
                    alt60=1;
                    }
                    break;
                case 78:
                    {
                    alt60=1;
                    }
                    break;
                case 79:
                    {
                    alt60=1;
                    }
                    break;
                case 80:
                    {
                    alt60=1;
                    }
                    break;

                }

                switch (alt60) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3583:2: () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3583:2: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3584:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getMulExpressionAccess().getExpressionChildrenAction_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3589:2: ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3590:1: ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3590:1: ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3591:1: (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3591:1: (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' )
            	    int alt59=5;
            	    switch ( input.LA(1) ) {
            	    case 76:
            	        {
            	        alt59=1;
            	        }
            	        break;
            	    case 77:
            	        {
            	        alt59=2;
            	        }
            	        break;
            	    case 78:
            	        {
            	        alt59=3;
            	        }
            	        break;
            	    case 79:
            	        {
            	        alt59=4;
            	        }
            	        break;
            	    case 80:
            	        {
            	        alt59=5;
            	        }
            	        break;
            	    default:
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 59, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt59) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3592:3: lv_operator_2_1= '*'
            	            {
            	            lv_operator_2_1=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleMulExpression7984); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_1, grammarAccess.getMulExpressionAccess().getOperatorAsteriskKeyword_1_1_0_0());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getMulExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_1, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3604:8: lv_operator_2_2= '/'
            	            {
            	            lv_operator_2_2=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleMulExpression8013); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_2, grammarAccess.getMulExpressionAccess().getOperatorSolidusKeyword_1_1_0_1());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getMulExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_2, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3616:8: lv_operator_2_3= '%'
            	            {
            	            lv_operator_2_3=(Token)match(input,78,FollowSets000.FOLLOW_78_in_ruleMulExpression8042); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_3, grammarAccess.getMulExpressionAccess().getOperatorPercentSignKeyword_1_1_0_2());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getMulExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_3, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3628:8: lv_operator_2_4= '<<'
            	            {
            	            lv_operator_2_4=(Token)match(input,79,FollowSets000.FOLLOW_79_in_ruleMulExpression8071); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_4, grammarAccess.getMulExpressionAccess().getOperatorLessThanSignLessThanSignKeyword_1_1_0_3());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getMulExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_4, null);
            	              	    
            	            }

            	            }
            	            break;
            	        case 5 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3640:8: lv_operator_2_5= '>>'
            	            {
            	            lv_operator_2_5=(Token)match(input,80,FollowSets000.FOLLOW_80_in_ruleMulExpression8100); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                      newLeafNode(lv_operator_2_5, grammarAccess.getMulExpressionAccess().getOperatorGreaterThanSignGreaterThanSignKeyword_1_1_0_4());
            	                  
            	            }
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElement(grammarAccess.getMulExpressionRule());
            	              	        }
            	                     		setWithLastConsumed(current, "operator", lv_operator_2_5, null);
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3655:2: ( (lv_children_3_0= ruleTerm ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3656:1: (lv_children_3_0= ruleTerm )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3656:1: (lv_children_3_0= ruleTerm )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3657:3: lv_children_3_0= ruleTerm
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getMulExpressionAccess().getChildrenTermParserRuleCall_1_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleMulExpression8137);
            	    lv_children_3_0=ruleTerm();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getMulExpressionRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"Term");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop60;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMulExpression"


    // $ANTLR start "entryRuleTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3681:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
    public final EObject entryRuleTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerm = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3682:2: (iv_ruleTerm= ruleTerm EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3683:2: iv_ruleTerm= ruleTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTermRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_entryRuleTerm8175);
            iv_ruleTerm=ruleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTerm8185); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTerm"


    // $ANTLR start "ruleTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3690:1: ruleTerm returns [EObject current=null] : ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? ) ) ;
    public final EObject ruleTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        Token lv_operator_5_1=null;
        Token lv_operator_5_2=null;
        EObject lv_children_2_0 = null;

        EObject this_ComplexTerm_3 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3693:28: ( ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:1: ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:1: ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? ) )
            int alt63=2;
            int LA63_0 = input.LA(1);

            if ( (LA63_0==81) ) {
                alt63=1;
            }
            else if ( ((LA63_0>=RULE_ID && LA63_0<=RULE_INT)||LA63_0==18||LA63_0==45||(LA63_0>=87 && LA63_0<=99)||(LA63_0>=106 && LA63_0<=107)) ) {
                alt63=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 63, 0, input);

                throw nvae;
            }
            switch (alt63) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:2: ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:2: ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:3: () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3694:3: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3695:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getTermAccess().getExpressionAction_0_0(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3700:2: ( (lv_operator_1_0= '!' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3701:1: (lv_operator_1_0= '!' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3701:1: (lv_operator_1_0= '!' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3702:3: lv_operator_1_0= '!'
                    {
                    lv_operator_1_0=(Token)match(input,81,FollowSets000.FOLLOW_81_in_ruleTerm8238); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_1_0, grammarAccess.getTermAccess().getOperatorExclamationMarkKeyword_0_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_1_0, "!");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3715:2: ( (lv_children_2_0= ruleTerm ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3716:1: (lv_children_2_0= ruleTerm )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3716:1: (lv_children_2_0= ruleTerm )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3717:3: lv_children_2_0= ruleTerm
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTermAccess().getChildrenTermParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleTerm8272);
                    lv_children_2_0=ruleTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_2_0, 
                              		"Term");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3734:6: (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3734:6: (this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )? )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3735:5: this_ComplexTerm_3= ruleComplexTerm ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )?
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTermAccess().getComplexTermParserRuleCall_1_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleComplexTerm_in_ruleTerm8302);
                    this_ComplexTerm_3=ruleComplexTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ComplexTerm_3; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3743:1: ( () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) ) )?
                    int alt62=2;
                    int LA62_0 = input.LA(1);

                    if ( (LA62_0==82) ) {
                        alt62=1;
                    }
                    else if ( (LA62_0==83) ) {
                        alt62=1;
                    }
                    switch (alt62) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3743:2: () ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) ) ( (lv_children_6_0= ruleTerm ) )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3743:2: ()
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3744:5: 
                            {
                            if ( state.backtracking==0 ) {

                                      current = forceCreateModelElementAndAdd(
                                          grammarAccess.getTermAccess().getExpressionChildrenAction_1_1_0(),
                                          current);
                                  
                            }

                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3749:2: ( ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3750:1: ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3750:1: ( (lv_operator_5_1= '??' | lv_operator_5_2= '^' ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3751:1: (lv_operator_5_1= '??' | lv_operator_5_2= '^' )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3751:1: (lv_operator_5_1= '??' | lv_operator_5_2= '^' )
                            int alt61=2;
                            int LA61_0 = input.LA(1);

                            if ( (LA61_0==82) ) {
                                alt61=1;
                            }
                            else if ( (LA61_0==83) ) {
                                alt61=2;
                            }
                            else {
                                if (state.backtracking>0) {state.failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("", 61, 0, input);

                                throw nvae;
                            }
                            switch (alt61) {
                                case 1 :
                                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3752:3: lv_operator_5_1= '??'
                                    {
                                    lv_operator_5_1=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleTerm8331); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_operator_5_1, grammarAccess.getTermAccess().getOperatorQuestionMarkQuestionMarkKeyword_1_1_1_0_0());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getTermRule());
                                      	        }
                                             		setWithLastConsumed(current, "operator", lv_operator_5_1, null);
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3764:8: lv_operator_5_2= '^'
                                    {
                                    lv_operator_5_2=(Token)match(input,83,FollowSets000.FOLLOW_83_in_ruleTerm8360); if (state.failed) return current;
                                    if ( state.backtracking==0 ) {

                                              newLeafNode(lv_operator_5_2, grammarAccess.getTermAccess().getOperatorCircumflexAccentKeyword_1_1_1_0_1());
                                          
                                    }
                                    if ( state.backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = createModelElement(grammarAccess.getTermRule());
                                      	        }
                                             		setWithLastConsumed(current, "operator", lv_operator_5_2, null);
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3779:2: ( (lv_children_6_0= ruleTerm ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3780:1: (lv_children_6_0= ruleTerm )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3780:1: (lv_children_6_0= ruleTerm )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3781:3: lv_children_6_0= ruleTerm
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getTermAccess().getChildrenTermParserRuleCall_1_1_2_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleTerm8397);
                            lv_children_6_0=ruleTerm();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getTermRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_6_0, 
                                      		"Term");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTerm"


    // $ANTLR start "entryRuleComplexTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3805:1: entryRuleComplexTerm returns [EObject current=null] : iv_ruleComplexTerm= ruleComplexTerm EOF ;
    public final EObject entryRuleComplexTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComplexTerm = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3806:2: (iv_ruleComplexTerm= ruleComplexTerm EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3807:2: iv_ruleComplexTerm= ruleComplexTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getComplexTermRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleComplexTerm_in_entryRuleComplexTerm8436);
            iv_ruleComplexTerm=ruleComplexTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleComplexTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleComplexTerm8446); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComplexTerm"


    // $ANTLR start "ruleComplexTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3814:1: ruleComplexTerm returns [EObject current=null] : (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )* ) ;
    public final EObject ruleComplexTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        Token lv_operator_5_0=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token lv_operator_11_0=null;
        Token otherlv_13=null;
        EObject this_SimpleTerm_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_6_0 = null;

        EObject lv_children_8_0 = null;

        EObject lv_children_12_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3817:28: ( (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3818:1: (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3818:1: (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3819:5: this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )*
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getComplexTermAccess().getSimpleTermParserRuleCall_0()); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_ruleComplexTerm8493);
            this_SimpleTerm_0=ruleSimpleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SimpleTerm_0; 
                      afterParserOrEnumRuleCall();
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3827:1: ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' ) )*
            loop66:
            do {
                int alt66=4;
                switch ( input.LA(1) ) {
                case 18:
                    {
                    alt66=2;
                    }
                    break;
                case 84:
                    {
                    alt66=1;
                    }
                    break;
                case 85:
                    {
                    alt66=3;
                    }
                    break;

                }

                switch (alt66) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3827:2: ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3827:2: ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3827:3: () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3827:3: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3828:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_0_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3833:2: ( (lv_operator_2_0= '.' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3834:1: (lv_operator_2_0= '.' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3834:1: (lv_operator_2_0= '.' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3835:3: lv_operator_2_0= '.'
            	    {
            	    lv_operator_2_0=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleComplexTerm8521); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_2_0, grammarAccess.getComplexTermAccess().getOperatorFullStopKeyword_1_0_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getComplexTermRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_2_0, ".");
            	      	    
            	    }

            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3848:2: ( (lv_children_3_0= ruleSimpleTerm ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3849:1: (lv_children_3_0= ruleSimpleTerm )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3849:1: (lv_children_3_0= ruleSimpleTerm )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3850:3: lv_children_3_0= ruleSimpleTerm
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getComplexTermAccess().getChildrenSimpleTermParserRuleCall_1_0_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_ruleComplexTerm8555);
            	    lv_children_3_0=ruleSimpleTerm();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getComplexTermRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_3_0, 
            	              		"SimpleTerm");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3867:6: ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3867:6: ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3867:7: () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )? otherlv_9= ')'
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3867:7: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3868:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_1_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3873:2: ( (lv_operator_5_0= '(' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3874:1: (lv_operator_5_0= '(' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3874:1: (lv_operator_5_0= '(' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3875:3: lv_operator_5_0= '('
            	    {
            	    lv_operator_5_0=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleComplexTerm8590); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_5_0, grammarAccess.getComplexTermAccess().getOperatorLeftParenthesisKeyword_1_1_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getComplexTermRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_5_0, "(");
            	      	    
            	    }

            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3888:2: ( ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )* )?
            	    int alt65=2;
            	    int LA65_0 = input.LA(1);

            	    if ( ((LA65_0>=RULE_ID && LA65_0<=RULE_INT)||LA65_0==18||LA65_0==33||(LA65_0>=44 && LA65_0<=45)||LA65_0==63||LA65_0==81||(LA65_0>=87 && LA65_0<=99)||(LA65_0>=106 && LA65_0<=107)) ) {
            	        alt65=1;
            	    }
            	    switch (alt65) {
            	        case 1 :
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3888:3: ( (lv_children_6_0= ruleExpression ) ) (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )*
            	            {
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3888:3: ( (lv_children_6_0= ruleExpression ) )
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3889:1: (lv_children_6_0= ruleExpression )
            	            {
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3889:1: (lv_children_6_0= ruleExpression )
            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3890:3: lv_children_6_0= ruleExpression
            	            {
            	            if ( state.backtracking==0 ) {
            	               
            	              	        newCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_0_0()); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm8625);
            	            lv_children_6_0=ruleExpression();

            	            state._fsp--;
            	            if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = createModelElementForParent(grammarAccess.getComplexTermRule());
            	              	        }
            	                     		add(
            	                     			current, 
            	                     			"children",
            	                      		lv_children_6_0, 
            	                      		"Expression");
            	              	        afterParserOrEnumRuleCall();
            	              	    
            	            }

            	            }


            	            }

            	            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3906:2: (otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) ) )*
            	            loop64:
            	            do {
            	                int alt64=2;
            	                int LA64_0 = input.LA(1);

            	                if ( (LA64_0==19) ) {
            	                    alt64=1;
            	                }


            	                switch (alt64) {
            	            	case 1 :
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3906:4: otherlv_7= ',' ( (lv_children_8_0= ruleExpression ) )
            	            	    {
            	            	    otherlv_7=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleComplexTerm8638); if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	          	newLeafNode(otherlv_7, grammarAccess.getComplexTermAccess().getCommaKeyword_1_1_2_1_0());
            	            	          
            	            	    }
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3910:1: ( (lv_children_8_0= ruleExpression ) )
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3911:1: (lv_children_8_0= ruleExpression )
            	            	    {
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3911:1: (lv_children_8_0= ruleExpression )
            	            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3912:3: lv_children_8_0= ruleExpression
            	            	    {
            	            	    if ( state.backtracking==0 ) {
            	            	       
            	            	      	        newCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_1_1_0()); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm8659);
            	            	    lv_children_8_0=ruleExpression();

            	            	    state._fsp--;
            	            	    if (state.failed) return current;
            	            	    if ( state.backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = createModelElementForParent(grammarAccess.getComplexTermRule());
            	            	      	        }
            	            	             		add(
            	            	             			current, 
            	            	             			"children",
            	            	              		lv_children_8_0, 
            	            	              		"Expression");
            	            	      	        afterParserOrEnumRuleCall();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop64;
            	                }
            	            } while (true);


            	            }
            	            break;

            	    }

            	    otherlv_9=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleComplexTerm8675); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_9, grammarAccess.getComplexTermAccess().getRightParenthesisKeyword_1_1_3());
            	          
            	    }

            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3933:6: ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3933:6: ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3933:7: () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) otherlv_13= ']'
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3933:7: ()
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3934:5: 
            	    {
            	    if ( state.backtracking==0 ) {

            	              current = forceCreateModelElementAndAdd(
            	                  grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_2_0(),
            	                  current);
            	          
            	    }

            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3939:2: ( (lv_operator_11_0= '[' ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3940:1: (lv_operator_11_0= '[' )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3940:1: (lv_operator_11_0= '[' )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3941:3: lv_operator_11_0= '['
            	    {
            	    lv_operator_11_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleComplexTerm8710); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              newLeafNode(lv_operator_11_0, grammarAccess.getComplexTermAccess().getOperatorLeftSquareBracketKeyword_1_2_1_0());
            	          
            	    }
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElement(grammarAccess.getComplexTermRule());
            	      	        }
            	             		setWithLastConsumed(current, "operator", lv_operator_11_0, "[");
            	      	    
            	    }

            	    }


            	    }

            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3954:2: ( (lv_children_12_0= ruleExpression ) )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3955:1: (lv_children_12_0= ruleExpression )
            	    {
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3955:1: (lv_children_12_0= ruleExpression )
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3956:3: lv_children_12_0= ruleExpression
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_2_2_0()); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm8744);
            	    lv_children_12_0=ruleExpression();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getComplexTermRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"children",
            	              		lv_children_12_0, 
            	              		"Expression");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }

            	    otherlv_13=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleComplexTerm8756); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_13, grammarAccess.getComplexTermAccess().getRightSquareBracketKeyword_1_2_3());
            	          
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop66;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComplexTerm"


    // $ANTLR start "entryRuleSimpleTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3984:1: entryRuleSimpleTerm returns [EObject current=null] : iv_ruleSimpleTerm= ruleSimpleTerm EOF ;
    public final EObject entryRuleSimpleTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleTerm = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3985:2: (iv_ruleSimpleTerm= ruleSimpleTerm EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3986:2: iv_ruleSimpleTerm= ruleSimpleTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSimpleTermRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_entryRuleSimpleTerm8795);
            iv_ruleSimpleTerm=ruleSimpleTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSimpleTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSimpleTerm8805); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleTerm"


    // $ANTLR start "ruleSimpleTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3993:1: ruleSimpleTerm returns [EObject current=null] : (this_LiteralExpression_0= ruleLiteralExpression | (otherlv_1= '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' ) | ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) ) | ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) ) | ( (lv_operator_22_0= 'null' ) ) | ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' ) | ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' ) | ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? ) ) ;
    public final EObject ruleSimpleTerm() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        Token lv_operator_9_0=null;
        Token otherlv_11=null;
        Token otherlv_13=null;
        Token otherlv_15=null;
        Token lv_operator_16_0=null;
        Token lv_operator_18_0=null;
        Token lv_operator_20_0=null;
        Token lv_operator_22_0=null;
        Token lv_operator_23_0=null;
        Token otherlv_24=null;
        Token otherlv_26=null;
        Token otherlv_28=null;
        Token lv_operator_29_1=null;
        Token lv_operator_29_2=null;
        Token otherlv_30=null;
        Token otherlv_32=null;
        Token otherlv_34=null;
        Token lv_operator_35_0=null;
        Token otherlv_37=null;
        Token otherlv_39=null;
        EObject this_LiteralExpression_0 = null;

        EObject this_VariableTerm_4 = null;

        EObject this_Expression_6 = null;

        EObject lv_children_12_0 = null;

        EObject lv_children_14_0 = null;

        EObject lv_children_17_0 = null;

        EObject lv_children_19_0 = null;

        EObject lv_children_21_0 = null;

        EObject lv_children_25_0 = null;

        EObject lv_children_27_0 = null;

        EObject lv_children_31_0 = null;

        EObject lv_children_33_0 = null;

        EObject lv_children_36_0 = null;

        EObject lv_children_38_0 = null;

        EObject lv_children_40_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3996:28: ( (this_LiteralExpression_0= ruleLiteralExpression | (otherlv_1= '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' ) | ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) ) | ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) ) | ( (lv_operator_22_0= 'null' ) ) | ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' ) | ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' ) | ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3997:1: (this_LiteralExpression_0= ruleLiteralExpression | (otherlv_1= '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' ) | ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) ) | ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) ) | ( (lv_operator_22_0= 'null' ) ) | ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' ) | ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' ) | ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3997:1: (this_LiteralExpression_0= ruleLiteralExpression | (otherlv_1= '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' ) | ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) ) | ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) ) | ( (lv_operator_22_0= 'null' ) ) | ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' ) | ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' ) | ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? ) )
            int alt74=12;
            alt74 = dfa74.predict(input);
            switch (alt74) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:3998:5: this_LiteralExpression_0= ruleLiteralExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTermAccess().getLiteralExpressionParserRuleCall_0()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLiteralExpression_in_ruleSimpleTerm8852);
                    this_LiteralExpression_0=ruleLiteralExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_LiteralExpression_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4007:6: (otherlv_1= '@' () ( ( ruleQualifiedID ) ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4007:6: (otherlv_1= '@' () ( ( ruleQualifiedID ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4007:8: otherlv_1= '@' () ( ( ruleQualifiedID ) )
                    {
                    otherlv_1=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleSimpleTerm8870); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getSimpleTermAccess().getCommercialAtKeyword_1_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4011:1: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4012:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getSimpleTermAccess().getConstantExpressionAction_1_1(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4017:2: ( ( ruleQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4018:1: ( ruleQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4018:1: ( ruleQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4019:3: ruleQualifiedID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getConstantConstantCrossReference_1_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleSimpleTerm8902);
                    ruleQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4034:5: this_VariableTerm_4= ruleVariableTerm
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTermAccess().getVariableTermParserRuleCall_2()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleVariableTerm_in_ruleSimpleTerm8931);
                    this_VariableTerm_4=ruleVariableTerm();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_VariableTerm_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4043:6: (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4043:6: (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4043:8: otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')'
                    {
                    otherlv_5=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleSimpleTerm8949); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getSimpleTermAccess().getLeftParenthesisKeyword_3_0());
                          
                    }
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTermAccess().getExpressionParserRuleCall_3_1()); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm8971);
                    this_Expression_6=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Expression_6; 
                              afterParserOrEnumRuleCall();
                          
                    }
                    otherlv_7=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleSimpleTerm8982); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getSimpleTermAccess().getRightParenthesisKeyword_3_2());
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4061:6: ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4061:6: ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4061:7: () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')'
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4061:7: ()
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4062:5: 
                    {
                    if ( state.backtracking==0 ) {

                              current = forceCreateModelElement(
                                  grammarAccess.getSimpleTermAccess().getNewExpressionAction_4_0(),
                                  current);
                          
                    }

                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4067:2: ( (lv_operator_9_0= 'new' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4068:1: (lv_operator_9_0= 'new' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4068:1: (lv_operator_9_0= 'new' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4069:3: lv_operator_9_0= 'new'
                    {
                    lv_operator_9_0=(Token)match(input,88,FollowSets000.FOLLOW_88_in_ruleSimpleTerm9017); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_9_0, grammarAccess.getSimpleTermAccess().getOperatorNewKeyword_4_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_9_0, "new");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4082:2: ( ( ruleQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4083:1: ( ruleQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4083:1: ( ruleQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4084:3: ruleQualifiedID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                              
                    }
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getTypeJavaTypeProxyCrossReference_4_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleSimpleTerm9053);
                    ruleQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_11=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleSimpleTerm9065); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_11, grammarAccess.getSimpleTermAccess().getLeftParenthesisKeyword_4_3());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4101:1: ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )?
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( ((LA68_0>=RULE_ID && LA68_0<=RULE_INT)||LA68_0==18||LA68_0==33||(LA68_0>=44 && LA68_0<=45)||LA68_0==63||LA68_0==81||(LA68_0>=87 && LA68_0<=99)||(LA68_0>=106 && LA68_0<=107)) ) {
                        alt68=1;
                    }
                    switch (alt68) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4101:2: ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )*
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4101:2: ( (lv_children_12_0= ruleExpression ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4102:1: (lv_children_12_0= ruleExpression )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4102:1: (lv_children_12_0= ruleExpression )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4103:3: lv_children_12_0= ruleExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_4_4_0_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm9087);
                            lv_children_12_0=ruleExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_12_0, 
                                      		"Expression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4119:2: (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )*
                            loop67:
                            do {
                                int alt67=2;
                                int LA67_0 = input.LA(1);

                                if ( (LA67_0==19) ) {
                                    alt67=1;
                                }


                                switch (alt67) {
                            	case 1 :
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4119:4: otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) )
                            	    {
                            	    otherlv_13=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm9100); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_13, grammarAccess.getSimpleTermAccess().getCommaKeyword_4_4_1_0());
                            	          
                            	    }
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4123:1: ( (lv_children_14_0= ruleExpression ) )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4124:1: (lv_children_14_0= ruleExpression )
                            	    {
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4124:1: (lv_children_14_0= ruleExpression )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4125:3: lv_children_14_0= ruleExpression
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_4_4_1_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm9121);
                            	    lv_children_14_0=ruleExpression();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"children",
                            	              		lv_children_14_0, 
                            	              		"Expression");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop67;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_15=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleSimpleTerm9137); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_15, grammarAccess.getSimpleTermAccess().getRightParenthesisKeyword_4_5());
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4146:6: ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4146:6: ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4146:7: ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4146:7: ( (lv_operator_16_0= 'job' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4147:1: (lv_operator_16_0= 'job' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4147:1: (lv_operator_16_0= 'job' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4148:3: lv_operator_16_0= 'job'
                    {
                    lv_operator_16_0=(Token)match(input,89,FollowSets000.FOLLOW_89_in_ruleSimpleTerm9163); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_16_0, grammarAccess.getSimpleTermAccess().getOperatorJobKeyword_5_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_16_0, "job");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4161:2: ( (lv_children_17_0= ruleStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4162:1: (lv_children_17_0= ruleStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4162:1: (lv_children_17_0= ruleStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4163:3: lv_children_17_0= ruleStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenStatementParserRuleCall_5_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleSimpleTerm9197);
                    lv_children_17_0=ruleStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_17_0, 
                              		"Statement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 7 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4180:6: ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4180:6: ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4180:7: ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4180:7: ( (lv_operator_18_0= 'nameresolver' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4181:1: (lv_operator_18_0= 'nameresolver' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4181:1: (lv_operator_18_0= 'nameresolver' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4182:3: lv_operator_18_0= 'nameresolver'
                    {
                    lv_operator_18_0=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleSimpleTerm9223); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_18_0, grammarAccess.getSimpleTermAccess().getOperatorNameresolverKeyword_6_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_18_0, "nameresolver");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4195:2: ( (lv_children_19_0= ruleStatement ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4196:1: (lv_children_19_0= ruleStatement )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4196:1: (lv_children_19_0= ruleStatement )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4197:3: lv_children_19_0= ruleStatement
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenStatementParserRuleCall_6_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleSimpleTerm9257);
                    lv_children_19_0=ruleStatement();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_19_0, 
                              		"Statement");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 8 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4214:6: ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4214:6: ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4214:7: ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4214:7: ( (lv_operator_20_0= 'ref' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4215:1: (lv_operator_20_0= 'ref' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4215:1: (lv_operator_20_0= 'ref' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4216:3: lv_operator_20_0= 'ref'
                    {
                    lv_operator_20_0=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleSimpleTerm9283); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_20_0, grammarAccess.getSimpleTermAccess().getOperatorRefKeyword_7_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_20_0, "ref");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4229:2: ( (lv_children_21_0= rulePatternExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4230:1: (lv_children_21_0= rulePatternExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4230:1: (lv_children_21_0= rulePatternExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4231:3: lv_children_21_0= rulePatternExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenPatternExpressionParserRuleCall_7_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_ruleSimpleTerm9317);
                    lv_children_21_0=rulePatternExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_21_0, 
                              		"PatternExpression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 9 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4248:6: ( (lv_operator_22_0= 'null' ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4248:6: ( (lv_operator_22_0= 'null' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4249:1: (lv_operator_22_0= 'null' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4249:1: (lv_operator_22_0= 'null' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4250:3: lv_operator_22_0= 'null'
                    {
                    lv_operator_22_0=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleSimpleTerm9342); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_22_0, grammarAccess.getSimpleTermAccess().getOperatorNullKeyword_8_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_22_0, "null");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 10 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4264:6: ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4264:6: ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4264:7: ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}'
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4264:7: ( (lv_operator_23_0= 'object' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4265:1: (lv_operator_23_0= 'object' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4265:1: (lv_operator_23_0= 'object' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4266:3: lv_operator_23_0= 'object'
                    {
                    lv_operator_23_0=(Token)match(input,93,FollowSets000.FOLLOW_93_in_ruleSimpleTerm9380); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_23_0, grammarAccess.getSimpleTermAccess().getOperatorObjectKeyword_9_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_23_0, "object");
                      	    
                    }

                    }


                    }

                    otherlv_24=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleSimpleTerm9405); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_24, grammarAccess.getSimpleTermAccess().getLeftCurlyBracketKeyword_9_1());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4283:1: ( (lv_children_25_0= ruleArgument ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4284:1: (lv_children_25_0= ruleArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4284:1: (lv_children_25_0= ruleArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4285:3: lv_children_25_0= ruleArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenArgumentParserRuleCall_9_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleSimpleTerm9426);
                    lv_children_25_0=ruleArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_25_0, 
                              		"Argument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4301:2: (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )*
                    loop69:
                    do {
                        int alt69=2;
                        int LA69_0 = input.LA(1);

                        if ( (LA69_0==19) ) {
                            alt69=1;
                        }


                        switch (alt69) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4301:4: otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) )
                    	    {
                    	    otherlv_26=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm9439); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_26, grammarAccess.getSimpleTermAccess().getCommaKeyword_9_3_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4305:1: ( (lv_children_27_0= ruleArgument ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4306:1: (lv_children_27_0= ruleArgument )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4306:1: (lv_children_27_0= ruleArgument )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4307:3: lv_children_27_0= ruleArgument
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenArgumentParserRuleCall_9_3_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleSimpleTerm9460);
                    	    lv_children_27_0=ruleArgument();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_27_0, 
                    	              		"Argument");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop69;
                        }
                    } while (true);

                    otherlv_28=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleSimpleTerm9474); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_28, grammarAccess.getSimpleTermAccess().getRightCurlyBracketKeyword_9_4());
                          
                    }

                    }


                    }
                    break;
                case 11 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4328:6: ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4328:6: ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4328:7: ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')'
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4328:7: ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4329:1: ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4329:1: ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4330:1: (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4330:1: (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' )
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( (LA70_0==94) ) {
                        alt70=1;
                    }
                    else if ( (LA70_0==95) ) {
                        alt70=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 70, 0, input);

                        throw nvae;
                    }
                    switch (alt70) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4331:3: lv_operator_29_1= 'date'
                            {
                            lv_operator_29_1=(Token)match(input,94,FollowSets000.FOLLOW_94_in_ruleSimpleTerm9502); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_29_1, grammarAccess.getSimpleTermAccess().getOperatorDateKeyword_10_0_0_0());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getSimpleTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_29_1, null);
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4343:8: lv_operator_29_2= 'formatdate'
                            {
                            lv_operator_29_2=(Token)match(input,95,FollowSets000.FOLLOW_95_in_ruleSimpleTerm9531); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                      newLeafNode(lv_operator_29_2, grammarAccess.getSimpleTermAccess().getOperatorFormatdateKeyword_10_0_0_1());
                                  
                            }
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElement(grammarAccess.getSimpleTermRule());
                              	        }
                                     		setWithLastConsumed(current, "operator", lv_operator_29_2, null);
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    otherlv_30=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleSimpleTerm9559); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_30, grammarAccess.getSimpleTermAccess().getLeftParenthesisKeyword_10_1());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4362:1: ( (lv_children_31_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4363:1: (lv_children_31_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4363:1: (lv_children_31_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4364:3: lv_children_31_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_10_2_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm9580);
                    lv_children_31_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_31_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4380:2: (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )?
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( (LA71_0==19) ) {
                        alt71=1;
                    }
                    switch (alt71) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4380:4: otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) )
                            {
                            otherlv_32=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm9593); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_32, grammarAccess.getSimpleTermAccess().getCommaKeyword_10_3_0());
                                  
                            }
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4384:1: ( (lv_children_33_0= ruleExpression ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4385:1: (lv_children_33_0= ruleExpression )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4385:1: (lv_children_33_0= ruleExpression )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4386:3: lv_children_33_0= ruleExpression
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_10_3_1_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm9614);
                            lv_children_33_0=ruleExpression();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_33_0, 
                                      		"Expression");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }

                    otherlv_34=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleSimpleTerm9628); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_34, grammarAccess.getSimpleTermAccess().getRightParenthesisKeyword_10_4());
                          
                    }

                    }


                    }
                    break;
                case 12 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:6: ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:6: ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:7: ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )?
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:7: ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:8: ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4414:1: (lv_operator_35_0= 'execute' )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4415:3: lv_operator_35_0= 'execute'
                    {
                    lv_operator_35_0=(Token)match(input,96,FollowSets000.FOLLOW_96_in_ruleSimpleTerm9669); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_35_0, grammarAccess.getSimpleTermAccess().getOperatorExecuteKeyword_11_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getSimpleTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_35_0, "execute");
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4428:2: ( (lv_children_36_0= ruleExpression ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4429:1: (lv_children_36_0= ruleExpression )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4429:1: (lv_children_36_0= ruleExpression )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4430:3: lv_children_36_0= ruleExpression
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_11_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm9703);
                    lv_children_36_0=ruleExpression();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_36_0, 
                              		"Expression");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4446:2: (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )?
                    int alt73=2;
                    int LA73_0 = input.LA(1);

                    if ( (LA73_0==45) ) {
                        alt73=1;
                    }
                    switch (alt73) {
                        case 1 :
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4446:4: otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )*
                            {
                            otherlv_37=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleSimpleTerm9716); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_37, grammarAccess.getSimpleTermAccess().getArgumentsKeyword_11_2_0());
                                  
                            }
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4450:1: ( (lv_children_38_0= ruleArgument ) )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4451:1: (lv_children_38_0= ruleArgument )
                            {
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4451:1: (lv_children_38_0= ruleArgument )
                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4452:3: lv_children_38_0= ruleArgument
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenArgumentParserRuleCall_11_2_1_0()); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleSimpleTerm9737);
                            lv_children_38_0=ruleArgument();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"children",
                                      		lv_children_38_0, 
                                      		"Argument");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }

                            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4468:2: (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )*
                            loop72:
                            do {
                                int alt72=2;
                                int LA72_0 = input.LA(1);

                                if ( (LA72_0==19) ) {
                                    alt72=1;
                                }


                                switch (alt72) {
                            	case 1 :
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4468:4: otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) )
                            	    {
                            	    otherlv_39=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm9750); if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	          	newLeafNode(otherlv_39, grammarAccess.getSimpleTermAccess().getCommaKeyword_11_2_2_0());
                            	          
                            	    }
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4472:1: ( (lv_children_40_0= ruleArgument ) )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4473:1: (lv_children_40_0= ruleArgument )
                            	    {
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4473:1: (lv_children_40_0= ruleArgument )
                            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4474:3: lv_children_40_0= ruleArgument
                            	    {
                            	    if ( state.backtracking==0 ) {
                            	       
                            	      	        newCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenArgumentParserRuleCall_11_2_2_1_0()); 
                            	      	    
                            	    }
                            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleSimpleTerm9771);
                            	    lv_children_40_0=ruleArgument();

                            	    state._fsp--;
                            	    if (state.failed) return current;
                            	    if ( state.backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = createModelElementForParent(grammarAccess.getSimpleTermRule());
                            	      	        }
                            	             		add(
                            	             			current, 
                            	             			"children",
                            	              		lv_children_40_0, 
                            	              		"Argument");
                            	      	        afterParserOrEnumRuleCall();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop72;
                                }
                            } while (true);


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleTerm"


    // $ANTLR start "entryRuleVariableTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4498:1: entryRuleVariableTerm returns [EObject current=null] : iv_ruleVariableTerm= ruleVariableTerm EOF ;
    public final EObject entryRuleVariableTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariableTerm = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4499:2: (iv_ruleVariableTerm= ruleVariableTerm EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4500:2: iv_ruleVariableTerm= ruleVariableTerm EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVariableTermRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleVariableTerm_in_entryRuleVariableTerm9812);
            iv_ruleVariableTerm=ruleVariableTerm();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVariableTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVariableTerm9822); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVariableTerm"


    // $ANTLR start "ruleVariableTerm"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4507:1: ruleVariableTerm returns [EObject current=null] : ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) ) ;
    public final EObject ruleVariableTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_1=null;
        Token lv_operator_0_2=null;
        Token lv_operator_0_3=null;
        Token lv_operator_0_4=null;
        Token lv_operator_0_5=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4510:28: ( ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4511:1: ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4511:1: ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4512:1: ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4512:1: ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4513:1: (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4513:1: (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' )
            int alt75=5;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt75=1;
                }
                break;
            case 97:
                {
                alt75=2;
                }
                break;
            case 98:
                {
                alt75=3;
                }
                break;
            case 99:
                {
                alt75=4;
                }
                break;
            case 45:
                {
                alt75=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 75, 0, input);

                throw nvae;
            }

            switch (alt75) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4514:3: lv_operator_0_1= RULE_ID
                    {
                    lv_operator_0_1=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleVariableTerm9865); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_operator_0_1, grammarAccess.getVariableTermAccess().getOperatorIDTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getVariableTermRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"operator",
                              		lv_operator_0_1, 
                              		"ID");
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4529:8: lv_operator_0_2= 'this'
                    {
                    lv_operator_0_2=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleVariableTerm9886); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_0_2, grammarAccess.getVariableTermAccess().getOperatorThisKeyword_0_1());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getVariableTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_0_2, null);
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4541:8: lv_operator_0_3= 'begin'
                    {
                    lv_operator_0_3=(Token)match(input,98,FollowSets000.FOLLOW_98_in_ruleVariableTerm9915); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_0_3, grammarAccess.getVariableTermAccess().getOperatorBeginKeyword_0_2());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getVariableTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_0_3, null);
                      	    
                    }

                    }
                    break;
                case 4 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4553:8: lv_operator_0_4= 'end'
                    {
                    lv_operator_0_4=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleVariableTerm9944); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_0_4, grammarAccess.getVariableTermAccess().getOperatorEndKeyword_0_3());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getVariableTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_0_4, null);
                      	    
                    }

                    }
                    break;
                case 5 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4565:8: lv_operator_0_5= 'arguments'
                    {
                    lv_operator_0_5=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleVariableTerm9973); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_operator_0_5, grammarAccess.getVariableTermAccess().getOperatorArgumentsKeyword_0_4());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getVariableTermRule());
                      	        }
                             		setWithLastConsumed(current, "operator", lv_operator_0_5, null);
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVariableTerm"


    // $ANTLR start "entryRuleLiteralExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4588:1: entryRuleLiteralExpression returns [EObject current=null] : iv_ruleLiteralExpression= ruleLiteralExpression EOF ;
    public final EObject entryRuleLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteralExpression = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4589:2: (iv_ruleLiteralExpression= ruleLiteralExpression EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4590:2: iv_ruleLiteralExpression= ruleLiteralExpression EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLiteralExpressionRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLiteralExpression_in_entryRuleLiteralExpression10024);
            iv_ruleLiteralExpression=ruleLiteralExpression();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLiteralExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLiteralExpression10034); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLiteralExpression"


    // $ANTLR start "ruleLiteralExpression"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4597:1: ruleLiteralExpression returns [EObject current=null] : ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) | ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) ) ) ;
    public final EObject ruleLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;
        Token lv_value_1_0=null;
        Token lv_value_2_0=null;
        AntlrDatatypeRuleToken lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4600:28: ( ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) | ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) ) ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4601:1: ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) | ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) ) )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4601:1: ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) | ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) ) )
            int alt76=4;
            switch ( input.LA(1) ) {
            case RULE_STRING:
                {
                alt76=1;
                }
                break;
            case RULE_VERBATIM_STRING:
                {
                alt76=2;
                }
                break;
            case RULE_INT:
                {
                alt76=3;
                }
                break;
            case 106:
            case 107:
                {
                alt76=4;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 76, 0, input);

                throw nvae;
            }

            switch (alt76) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4601:2: ( (lv_value_0_0= RULE_STRING ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4601:2: ( (lv_value_0_0= RULE_STRING ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4602:1: (lv_value_0_0= RULE_STRING )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4602:1: (lv_value_0_0= RULE_STRING )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4603:3: lv_value_0_0= RULE_STRING
                    {
                    lv_value_0_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleLiteralExpression10076); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_0_0, grammarAccess.getLiteralExpressionAccess().getValueSTRINGTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLiteralExpressionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_0_0, 
                              		"STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4620:6: ( (lv_value_1_0= RULE_VERBATIM_STRING ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4620:6: ( (lv_value_1_0= RULE_VERBATIM_STRING ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4621:1: (lv_value_1_0= RULE_VERBATIM_STRING )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4621:1: (lv_value_1_0= RULE_VERBATIM_STRING )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4622:3: lv_value_1_0= RULE_VERBATIM_STRING
                    {
                    lv_value_1_0=(Token)match(input,RULE_VERBATIM_STRING,FollowSets000.FOLLOW_RULE_VERBATIM_STRING_in_ruleLiteralExpression10104); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_1_0, grammarAccess.getLiteralExpressionAccess().getValueVERBATIM_STRINGTerminalRuleCall_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLiteralExpressionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_1_0, 
                              		"VERBATIM_STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4639:6: ( (lv_value_2_0= RULE_INT ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4639:6: ( (lv_value_2_0= RULE_INT ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4640:1: (lv_value_2_0= RULE_INT )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4640:1: (lv_value_2_0= RULE_INT )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4641:3: lv_value_2_0= RULE_INT
                    {
                    lv_value_2_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleLiteralExpression10132); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_value_2_0, grammarAccess.getLiteralExpressionAccess().getValueINTTerminalRuleCall_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLiteralExpressionRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"value",
                              		lv_value_2_0, 
                              		"INT");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4658:6: ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4658:6: ( (lv_value_3_0= ruleBOOLEAN_CONSTANTS ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4659:1: (lv_value_3_0= ruleBOOLEAN_CONSTANTS )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4659:1: (lv_value_3_0= ruleBOOLEAN_CONSTANTS )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4660:3: lv_value_3_0= ruleBOOLEAN_CONSTANTS
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLiteralExpressionAccess().getValueBOOLEAN_CONSTANTSParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleBOOLEAN_CONSTANTS_in_ruleLiteralExpression10164);
                    lv_value_3_0=ruleBOOLEAN_CONSTANTS();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLiteralExpressionRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"BOOLEAN_CONSTANTS");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLiteralExpression"


    // $ANTLR start "entryRulePatternMatchInfoProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4684:1: entryRulePatternMatchInfoProxy returns [EObject current=null] : iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF ;
    public final EObject entryRulePatternMatchInfoProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternMatchInfoProxy = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4685:2: (iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4686:2: iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPatternMatchInfoProxyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternMatchInfoProxy_in_entryRulePatternMatchInfoProxy10200);
            iv_rulePatternMatchInfoProxy=rulePatternMatchInfoProxy();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePatternMatchInfoProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternMatchInfoProxy10210); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePatternMatchInfoProxy"


    // $ANTLR start "rulePatternMatchInfoProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4693:1: rulePatternMatchInfoProxy returns [EObject current=null] : (otherlv_0= 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject rulePatternMatchInfoProxy() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4696:28: ( (otherlv_0= 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4697:1: (otherlv_0= 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4697:1: (otherlv_0= 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4697:3: otherlv_0= 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            otherlv_0=(Token)match(input,100,FollowSets000.FOLLOW_100_in_rulePatternMatchInfoProxy10247); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPatternMatchInfoProxyAccess().getMatchinfoKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4701:1: ( (lv_name_1_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4702:1: (lv_name_1_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4702:1: (lv_name_1_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4703:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rulePatternMatchInfoProxy10264); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getPatternMatchInfoProxyAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getPatternMatchInfoProxyRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,101,FollowSets000.FOLLOW_101_in_rulePatternMatchInfoProxy10281); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getPatternMatchInfoProxyAccess().getClassKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4723:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4724:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4724:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4725:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy10302);
            lv_baseClass_3_0=ruleDotQualifiedID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPatternMatchInfoProxyRule());
              	        }
                     		set(
                     			current, 
                     			"baseClass",
                      		lv_baseClass_3_0, 
                      		"DotQualifiedID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4741:2: (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==102) ) {
                alt77=1;
            }
            switch (alt77) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4741:4: otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    otherlv_4=(Token)match(input,102,FollowSets000.FOLLOW_102_in_rulePatternMatchInfoProxy10315); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getPatternMatchInfoProxyAccess().getFactoryKeyword_4_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4745:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4746:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4746:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4747:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy10336);
                    lv_factory_5_0=ruleDotQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternMatchInfoProxyRule());
                      	        }
                             		set(
                             			current, 
                             			"factory",
                              		lv_factory_5_0, 
                              		"DotQualifiedID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4763:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==45) ) {
                alt78=1;
            }
            switch (alt78) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4764:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4764:1: (lv_children_6_0= ruleProxyArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4765:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_rulePatternMatchInfoProxy10359);
                    lv_children_6_0=ruleProxyArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getPatternMatchInfoProxyRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_6_0, 
                              		"ProxyArgument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePatternMatchInfoProxy"


    // $ANTLR start "entryRuleLocatorProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4789:1: entryRuleLocatorProxy returns [EObject current=null] : iv_ruleLocatorProxy= ruleLocatorProxy EOF ;
    public final EObject entryRuleLocatorProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLocatorProxy = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4790:2: (iv_ruleLocatorProxy= ruleLocatorProxy EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4791:2: iv_ruleLocatorProxy= ruleLocatorProxy EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLocatorProxyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLocatorProxy_in_entryRuleLocatorProxy10396);
            iv_ruleLocatorProxy=ruleLocatorProxy();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLocatorProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocatorProxy10406); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLocatorProxy"


    // $ANTLR start "ruleLocatorProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4798:1: ruleLocatorProxy returns [EObject current=null] : (otherlv_0= 'locator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject ruleLocatorProxy() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4801:28: ( (otherlv_0= 'locator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4802:1: (otherlv_0= 'locator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4802:1: (otherlv_0= 'locator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4802:3: otherlv_0= 'locator' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            otherlv_0=(Token)match(input,103,FollowSets000.FOLLOW_103_in_ruleLocatorProxy10443); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getLocatorProxyAccess().getLocatorKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4806:1: ( (lv_name_1_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4807:1: (lv_name_1_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4807:1: (lv_name_1_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4808:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleLocatorProxy10460); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getLocatorProxyAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getLocatorProxyRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,101,FollowSets000.FOLLOW_101_in_ruleLocatorProxy10477); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getLocatorProxyAccess().getClassKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4828:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4829:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4829:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4830:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLocatorProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy10498);
            lv_baseClass_3_0=ruleDotQualifiedID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLocatorProxyRule());
              	        }
                     		set(
                     			current, 
                     			"baseClass",
                      		lv_baseClass_3_0, 
                      		"DotQualifiedID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4846:2: (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt79=2;
            int LA79_0 = input.LA(1);

            if ( (LA79_0==102) ) {
                alt79=1;
            }
            switch (alt79) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4846:4: otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    otherlv_4=(Token)match(input,102,FollowSets000.FOLLOW_102_in_ruleLocatorProxy10511); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getLocatorProxyAccess().getFactoryKeyword_4_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4850:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4851:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4851:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4852:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLocatorProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy10532);
                    lv_factory_5_0=ruleDotQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLocatorProxyRule());
                      	        }
                             		set(
                             			current, 
                             			"factory",
                              		lv_factory_5_0, 
                              		"DotQualifiedID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4868:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt80=2;
            int LA80_0 = input.LA(1);

            if ( (LA80_0==45) ) {
                alt80=1;
            }
            switch (alt80) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4869:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4869:1: (lv_children_6_0= ruleProxyArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4870:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLocatorProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_ruleLocatorProxy10555);
                    lv_children_6_0=ruleProxyArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLocatorProxyRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_6_0, 
                              		"ProxyArgument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLocatorProxy"


    // $ANTLR start "entryRuleTypeProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4894:1: entryRuleTypeProxy returns [EObject current=null] : iv_ruleTypeProxy= ruleTypeProxy EOF ;
    public final EObject entryRuleTypeProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeProxy = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4895:2: (iv_ruleTypeProxy= ruleTypeProxy EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4896:2: iv_ruleTypeProxy= ruleTypeProxy EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeProxyRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleTypeProxy_in_entryRuleTypeProxy10592);
            iv_ruleTypeProxy=ruleTypeProxy();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypeProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeProxy10602); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeProxy"


    // $ANTLR start "ruleTypeProxy"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4903:1: ruleTypeProxy returns [EObject current=null] : (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject ruleTypeProxy() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4906:28: ( (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4907:1: (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4907:1: (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4907:3: otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            otherlv_0=(Token)match(input,104,FollowSets000.FOLLOW_104_in_ruleTypeProxy10639); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTypeProxyAccess().getTypeKeyword_0());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4911:1: ( (lv_name_1_0= RULE_ID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4912:1: (lv_name_1_0= RULE_ID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4912:1: (lv_name_1_0= RULE_ID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4913:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleTypeProxy10656); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_1_0, grammarAccess.getTypeProxyAccess().getNameIDTerminalRuleCall_1_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getTypeProxyRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_1_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleTypeProxy10673); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getTypeProxyAccess().getEqualsSignKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4933:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4934:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4934:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4935:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTypeProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy10694);
            lv_baseClass_3_0=ruleDotQualifiedID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTypeProxyRule());
              	        }
                     		set(
                     			current, 
                     			"baseClass",
                      		lv_baseClass_3_0, 
                      		"DotQualifiedID");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4951:2: (otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==102) ) {
                alt81=1;
            }
            switch (alt81) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4951:4: otherlv_4= 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    otherlv_4=(Token)match(input,102,FollowSets000.FOLLOW_102_in_ruleTypeProxy10707); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getTypeProxyAccess().getFactoryKeyword_4_0());
                          
                    }
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4955:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4956:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4956:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4957:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTypeProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy10728);
                    lv_factory_5_0=ruleDotQualifiedID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTypeProxyRule());
                      	        }
                             		set(
                             			current, 
                             			"factory",
                              		lv_factory_5_0, 
                              		"DotQualifiedID");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4973:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==45) ) {
                alt82=1;
            }
            switch (alt82) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4974:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4974:1: (lv_children_6_0= ruleProxyArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4975:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTypeProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_ruleTypeProxy10751);
                    lv_children_6_0=ruleProxyArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTypeProxyRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_6_0, 
                              		"ProxyArgument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeProxy"


    // $ANTLR start "entryRuleProxyArgument"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4999:1: entryRuleProxyArgument returns [EObject current=null] : iv_ruleProxyArgument= ruleProxyArgument EOF ;
    public final EObject entryRuleProxyArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProxyArgument = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5000:2: (iv_ruleProxyArgument= ruleProxyArgument EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5001:2: iv_ruleProxyArgument= ruleProxyArgument EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getProxyArgumentRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_entryRuleProxyArgument10788);
            iv_ruleProxyArgument=ruleProxyArgument();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleProxyArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProxyArgument10798); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleProxyArgument"


    // $ANTLR start "ruleProxyArgument"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5008:1: ruleProxyArgument returns [EObject current=null] : ( () otherlv_1= 'arguments' otherlv_2= '{' ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? otherlv_6= '}' ) ;
    public final EObject ruleProxyArgument() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5011:28: ( ( () otherlv_1= 'arguments' otherlv_2= '{' ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? otherlv_6= '}' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5012:1: ( () otherlv_1= 'arguments' otherlv_2= '{' ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? otherlv_6= '}' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5012:1: ( () otherlv_1= 'arguments' otherlv_2= '{' ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? otherlv_6= '}' )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5012:2: () otherlv_1= 'arguments' otherlv_2= '{' ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )? otherlv_6= '}'
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5012:2: ()
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5013:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getProxyArgumentAccess().getElementAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleProxyArgument10844); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getProxyArgumentAccess().getArgumentsKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleProxyArgument10856); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getProxyArgumentAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5026:1: ( ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )?
            int alt84=2;
            int LA84_0 = input.LA(1);

            if ( ((LA84_0>=RULE_ID && LA84_0<=RULE_INT)||LA84_0==18||LA84_0==33||(LA84_0>=44 && LA84_0<=45)||LA84_0==60||LA84_0==63||LA84_0==81||(LA84_0>=87 && LA84_0<=99)||(LA84_0>=106 && LA84_0<=107)) ) {
                alt84=1;
            }
            switch (alt84) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5026:2: ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5026:2: ( (lv_children_3_0= ruleArgument ) )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5027:1: (lv_children_3_0= ruleArgument )
                    {
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5027:1: (lv_children_3_0= ruleArgument )
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5028:3: lv_children_3_0= ruleArgument
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getProxyArgumentAccess().getChildrenArgumentParserRuleCall_3_0_0()); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleProxyArgument10878);
                    lv_children_3_0=ruleArgument();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getProxyArgumentRule());
                      	        }
                             		add(
                             			current, 
                             			"children",
                              		lv_children_3_0, 
                              		"Argument");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5044:2: (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    loop83:
                    do {
                        int alt83=2;
                        int LA83_0 = input.LA(1);

                        if ( (LA83_0==19) ) {
                            alt83=1;
                        }


                        switch (alt83) {
                    	case 1 :
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5044:4: otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) )
                    	    {
                    	    otherlv_4=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleProxyArgument10891); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getProxyArgumentAccess().getCommaKeyword_3_1_0());
                    	          
                    	    }
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5048:1: ( (lv_children_5_0= ruleArgument ) )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5049:1: (lv_children_5_0= ruleArgument )
                    	    {
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5049:1: (lv_children_5_0= ruleArgument )
                    	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5050:3: lv_children_5_0= ruleArgument
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getProxyArgumentAccess().getChildrenArgumentParserRuleCall_3_1_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleProxyArgument10912);
                    	    lv_children_5_0=ruleArgument();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getProxyArgumentRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"children",
                    	              		lv_children_5_0, 
                    	              		"Argument");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop83;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_6=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleProxyArgument10928); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getProxyArgumentAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleProxyArgument"


    // $ANTLR start "entryRuleQualifiedID"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5078:1: entryRuleQualifiedID returns [String current=null] : iv_ruleQualifiedID= ruleQualifiedID EOF ;
    public final String entryRuleQualifiedID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedID = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5079:2: (iv_ruleQualifiedID= ruleQualifiedID EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5080:2: iv_ruleQualifiedID= ruleQualifiedID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getQualifiedIDRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_entryRuleQualifiedID10965);
            iv_ruleQualifiedID=ruleQualifiedID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleQualifiedID.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleQualifiedID10976); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedID"


    // $ANTLR start "ruleQualifiedID"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5087:1: ruleQualifiedID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5090:28: ( (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5091:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5091:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5091:6: this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedID11016); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_0()); 
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5098:1: (kw= '::' this_ID_2= RULE_ID )*
            loop85:
            do {
                int alt85=2;
                int LA85_0 = input.LA(1);

                if ( (LA85_0==105) ) {
                    alt85=1;
                }


                switch (alt85) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5099:2: kw= '::' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,105,FollowSets000.FOLLOW_105_in_ruleQualifiedID11035); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getQualifiedIDAccess().getColonColonKeyword_1_0()); 
            	          
            	    }
            	    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedID11050); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	          newLeafNode(this_ID_2, grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_1_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop85;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedID"


    // $ANTLR start "entryRuleDotQualifiedID"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5119:1: entryRuleDotQualifiedID returns [String current=null] : iv_ruleDotQualifiedID= ruleDotQualifiedID EOF ;
    public final String entryRuleDotQualifiedID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDotQualifiedID = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5120:2: (iv_ruleDotQualifiedID= ruleDotQualifiedID EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5121:2: iv_ruleDotQualifiedID= ruleDotQualifiedID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDotQualifiedIDRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_entryRuleDotQualifiedID11098);
            iv_ruleDotQualifiedID=ruleDotQualifiedID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDotQualifiedID.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDotQualifiedID11109); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDotQualifiedID"


    // $ANTLR start "ruleDotQualifiedID"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5128:1: ruleDotQualifiedID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleDotQualifiedID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5131:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5132:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5132:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5132:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDotQualifiedID11149); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_ID_0, grammarAccess.getDotQualifiedIDAccess().getIDTerminalRuleCall_0()); 
                  
            }
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5139:1: (kw= '.' this_ID_2= RULE_ID )*
            loop86:
            do {
                int alt86=2;
                int LA86_0 = input.LA(1);

                if ( (LA86_0==84) ) {
                    alt86=1;
                }


                switch (alt86) {
            	case 1 :
            	    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5140:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleDotQualifiedID11168); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	              current.merge(kw);
            	              newLeafNode(kw, grammarAccess.getDotQualifiedIDAccess().getFullStopKeyword_1_0()); 
            	          
            	    }
            	    this_ID_2=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDotQualifiedID11183); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		current.merge(this_ID_2);
            	          
            	    }
            	    if ( state.backtracking==0 ) {
            	       
            	          newLeafNode(this_ID_2, grammarAccess.getDotQualifiedIDAccess().getIDTerminalRuleCall_1_1()); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop86;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDotQualifiedID"


    // $ANTLR start "entryRuleBOOLEAN_CONSTANTS"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5160:1: entryRuleBOOLEAN_CONSTANTS returns [String current=null] : iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF ;
    public final String entryRuleBOOLEAN_CONSTANTS() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleBOOLEAN_CONSTANTS = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5161:2: (iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5162:2: iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBOOLEAN_CONSTANTSRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBOOLEAN_CONSTANTS_in_entryRuleBOOLEAN_CONSTANTS11231);
            iv_ruleBOOLEAN_CONSTANTS=ruleBOOLEAN_CONSTANTS();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBOOLEAN_CONSTANTS.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBOOLEAN_CONSTANTS11242); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBOOLEAN_CONSTANTS"


    // $ANTLR start "ruleBOOLEAN_CONSTANTS"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5169:1: ruleBOOLEAN_CONSTANTS returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'true' | kw= 'false' ) ;
    public final AntlrDatatypeRuleToken ruleBOOLEAN_CONSTANTS() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5172:28: ( (kw= 'true' | kw= 'false' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5173:1: (kw= 'true' | kw= 'false' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5173:1: (kw= 'true' | kw= 'false' )
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==106) ) {
                alt87=1;
            }
            else if ( (LA87_0==107) ) {
                alt87=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 87, 0, input);

                throw nvae;
            }
            switch (alt87) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5174:2: kw= 'true'
                    {
                    kw=(Token)match(input,106,FollowSets000.FOLLOW_106_in_ruleBOOLEAN_CONSTANTS11280); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getBOOLEAN_CONSTANTSAccess().getTrueKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5181:2: kw= 'false'
                    {
                    kw=(Token)match(input,107,FollowSets000.FOLLOW_107_in_ruleBOOLEAN_CONSTANTS11299); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getBOOLEAN_CONSTANTSAccess().getFalseKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBOOLEAN_CONSTANTS"


    // $ANTLR start "entryRulePOSITION_CONSTANTS"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5194:1: entryRulePOSITION_CONSTANTS returns [String current=null] : iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF ;
    public final String entryRulePOSITION_CONSTANTS() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePOSITION_CONSTANTS = null;


        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5195:2: (iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5196:2: iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPOSITION_CONSTANTSRule()); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePOSITION_CONSTANTS_in_entryRulePOSITION_CONSTANTS11340);
            iv_rulePOSITION_CONSTANTS=rulePOSITION_CONSTANTS();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePOSITION_CONSTANTS.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePOSITION_CONSTANTS11351); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePOSITION_CONSTANTS"


    // $ANTLR start "rulePOSITION_CONSTANTS"
    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5203:1: rulePOSITION_CONSTANTS returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'begin' | kw= 'end' ) ;
    public final AntlrDatatypeRuleToken rulePOSITION_CONSTANTS() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5206:28: ( (kw= 'begin' | kw= 'end' ) )
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5207:1: (kw= 'begin' | kw= 'end' )
            {
            // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5207:1: (kw= 'begin' | kw= 'end' )
            int alt88=2;
            int LA88_0 = input.LA(1);

            if ( (LA88_0==98) ) {
                alt88=1;
            }
            else if ( (LA88_0==99) ) {
                alt88=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 88, 0, input);

                throw nvae;
            }
            switch (alt88) {
                case 1 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5208:2: kw= 'begin'
                    {
                    kw=(Token)match(input,98,FollowSets000.FOLLOW_98_in_rulePOSITION_CONSTANTS11389); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getPOSITION_CONSTANTSAccess().getBeginKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:5215:2: kw= 'end'
                    {
                    kw=(Token)match(input,99,FollowSets000.FOLLOW_99_in_rulePOSITION_CONSTANTS11408); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getPOSITION_CONSTANTSAccess().getEndKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePOSITION_CONSTANTS"

    // $ANTLR start synpred1_InternalDesl
    public final void synpred1_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:6: ( 'options' )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:758:8: 'options'
        {
        match(input,25,FollowSets000.FOLLOW_25_in_synpred1_InternalDesl1725); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred1_InternalDesl

    // $ANTLR start synpred4_InternalDesl
    public final void synpred4_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:4: ( 'arguments' )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1689:6: 'arguments'
        {
        match(input,45,FollowSets000.FOLLOW_45_in_synpred4_InternalDesl3849); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred4_InternalDesl

    // $ANTLR start synpred5_InternalDesl
    public final void synpred5_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:8: ( 'options' )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:1734:10: 'options'
        {
        match(input,25,FollowSets000.FOLLOW_25_in_synpred5_InternalDesl3930); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred5_InternalDesl

    // $ANTLR start synpred6_InternalDesl
    public final void synpred6_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:4: ( 'else' )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2005:6: 'else'
        {
        match(input,56,FollowSets000.FOLLOW_56_in_synpred6_InternalDesl4532); if (state.failed) return ;

        }
    }
    // $ANTLR end synpred6_InternalDesl

    // $ANTLR start synpred7_InternalDesl
    public final void synpred7_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2680:4: ( ( ruleDotQualifiedID ) )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2681:1: ( ruleDotQualifiedID )
        {
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2681:1: ( ruleDotQualifiedID )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:2682:1: ruleDotQualifiedID
        {
        pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_synpred7_InternalDesl5939);
        ruleDotQualifiedID();

        state._fsp--;
        if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred7_InternalDesl

    // $ANTLR start synpred8_InternalDesl
    public final void synpred8_InternalDesl_fragment() throws RecognitionException {   
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4407:8: ( ( 'execute' ) )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4408:1: ( 'execute' )
        {
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4408:1: ( 'execute' )
        // ../sphynx.desl.parser/src-gen/sphynx/parser/antlr/internal/InternalDesl.g:4409:2: 'execute'
        {
        match(input,96,FollowSets000.FOLLOW_96_in_synpred8_InternalDesl9651); if (state.failed) return ;

        }


        }
    }
    // $ANTLR end synpred8_InternalDesl

    // Delegated rules

    public final boolean synpred1_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred6_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred6_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred5_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred5_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred7_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred7_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred8_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred8_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }
    public final boolean synpred4_InternalDesl() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred4_InternalDesl_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA10 dfa10 = new DFA10(this);
    protected DFA29 dfa29 = new DFA29(this);
    protected DFA42 dfa42 = new DFA42(this);
    protected DFA74 dfa74 = new DFA74(this);
    static final String DFA10_eotS =
        "\13\uffff";
    static final String DFA10_eofS =
        "\13\uffff";
    static final String DFA10_minS =
        "\1\5\12\uffff";
    static final String DFA10_maxS =
        "\1\153\12\uffff";
    static final String DFA10_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12";
    static final String DFA10_specialS =
        "\13\uffff}>";
    static final String[] DFA10_transitionS = {
            "\4\5\5\uffff\1\7\3\uffff\1\5\5\uffff\1\12\3\uffff\1\10\3\uffff"+
            "\1\11\1\1\4\uffff\1\2\2\3\1\6\2\uffff\2\5\11\uffff\1\4\1\uffff"+
            "\1\6\1\uffff\1\6\25\uffff\1\5\5\uffff\15\5\6\uffff\2\5",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
    static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
    static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
    static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
    static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
    static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
    static final short[][] DFA10_transition;

    static {
        int numStates = DFA10_transitionS.length;
        DFA10_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
        }
    }

    class DFA10 extends DFA {

        public DFA10(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 10;
            this.eot = DFA10_eot;
            this.eof = DFA10_eof;
            this.min = DFA10_min;
            this.max = DFA10_max;
            this.accept = DFA10_accept;
            this.special = DFA10_special;
            this.transition = DFA10_transition;
        }
        public String getDescription() {
            return "563:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement otherlv_2= ';' ) | (this_LocateStatement_3= ruleLocateStatement otherlv_4= ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression otherlv_7= ';' ) | this_LoopStatement_8= ruleLoopStatement | this_EmptyStatement_9= ruleEmptyStatement | (this_LogStatement_10= ruleLogStatement otherlv_11= ';' ) | this_LogConfigStatement_12= ruleLogConfigStatement | (this_ExecStatement_13= ruleExecStatement otherlv_14= ';' ) )";
        }
    }
    static final String DFA29_eotS =
        "\100\uffff";
    static final String DFA29_eofS =
        "\1\2\77\uffff";
    static final String DFA29_minS =
        "\1\5\1\0\76\uffff";
    static final String DFA29_maxS =
        "\1\153\1\0\76\uffff";
    static final String DFA29_acceptS =
        "\2\uffff\1\2\74\uffff\1\1";
    static final String DFA29_specialS =
        "\1\uffff\1\0\76\uffff}>";
    static final String[] DFA29_transitionS = {
            "\4\2\5\uffff\1\2\2\uffff\4\2\2\uffff\1\2\1\uffff\3\2\5\uffff"+
            "\2\2\6\uffff\4\2\1\1\16\uffff\2\2\1\uffff\45\2\6\uffff\2\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA29_eot = DFA.unpackEncodedString(DFA29_eotS);
    static final short[] DFA29_eof = DFA.unpackEncodedString(DFA29_eofS);
    static final char[] DFA29_min = DFA.unpackEncodedStringToUnsignedChars(DFA29_minS);
    static final char[] DFA29_max = DFA.unpackEncodedStringToUnsignedChars(DFA29_maxS);
    static final short[] DFA29_accept = DFA.unpackEncodedString(DFA29_acceptS);
    static final short[] DFA29_special = DFA.unpackEncodedString(DFA29_specialS);
    static final short[][] DFA29_transition;

    static {
        int numStates = DFA29_transitionS.length;
        DFA29_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA29_transition[i] = DFA.unpackEncodedString(DFA29_transitionS[i]);
        }
    }

    class DFA29 extends DFA {

        public DFA29(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 29;
            this.eot = DFA29_eot;
            this.eof = DFA29_eof;
            this.min = DFA29_min;
            this.max = DFA29_max;
            this.accept = DFA29_accept;
            this.special = DFA29_special;
            this.transition = DFA29_transition;
        }
        public String getDescription() {
            return "1689:2: ( ( ( 'arguments' )=>otherlv_2= 'arguments' ) ( (lv_children_3_0= ruleArgument ) ) (otherlv_4= ',' ( (lv_children_5_0= ruleArgument ) ) )* )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA29_1 = input.LA(1);

                         
                        int index29_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred4_InternalDesl()) ) {s = 63;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index29_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 29, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA42_eotS =
        "\34\uffff";
    static final String DFA42_eofS =
        "\34\uffff";
    static final String DFA42_minS =
        "\1\5\1\0\32\uffff";
    static final String DFA42_maxS =
        "\1\153\1\0\32\uffff";
    static final String DFA42_acceptS =
        "\2\uffff\1\2\30\uffff\1\1";
    static final String DFA42_specialS =
        "\1\uffff\1\0\32\uffff}>";
    static final String[] DFA42_transitionS = {
            "\1\1\3\2\11\uffff\1\2\16\uffff\1\2\12\uffff\2\2\16\uffff\1"+
            "\2\2\uffff\1\2\21\uffff\1\2\5\uffff\15\2\6\uffff\2\2",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
    static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
    static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
    static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
    static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
    static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
    static final short[][] DFA42_transition;

    static {
        int numStates = DFA42_transitionS.length;
        DFA42_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA42_transition[i] = DFA.unpackEncodedString(DFA42_transitionS[i]);
        }
    }

    class DFA42 extends DFA {

        public DFA42(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 42;
            this.eot = DFA42_eot;
            this.eof = DFA42_eof;
            this.min = DFA42_min;
            this.max = DFA42_max;
            this.accept = DFA42_accept;
            this.special = DFA42_special;
            this.transition = DFA42_transition;
        }
        public String getDescription() {
            return "2680:2: ( ( ( ( ruleDotQualifiedID ) )=> (lv_name_1_0= ruleDotQualifiedID ) ) otherlv_2= '=' )?";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA42_1 = input.LA(1);

                         
                        int index42_1 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred7_InternalDesl()) ) {s = 27;}

                        else if ( (true) ) {s = 2;}

                         
                        input.seek(index42_1);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 42, _s, input);
            error(nvae);
            throw nvae;
        }
    }
    static final String DFA74_eotS =
        "\15\uffff";
    static final String DFA74_eofS =
        "\15\uffff";
    static final String DFA74_minS =
        "\1\5\14\uffff";
    static final String DFA74_maxS =
        "\1\153\14\uffff";
    static final String DFA74_acceptS =
        "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14";
    static final String DFA74_specialS =
        "\1\0\14\uffff}>";
    static final String[] DFA74_transitionS = {
            "\1\3\3\1\11\uffff\1\4\32\uffff\1\3\51\uffff\1\2\1\5\1\6\1\7"+
            "\1\10\1\11\1\12\2\13\1\14\3\3\6\uffff\2\1",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA74_eot = DFA.unpackEncodedString(DFA74_eotS);
    static final short[] DFA74_eof = DFA.unpackEncodedString(DFA74_eofS);
    static final char[] DFA74_min = DFA.unpackEncodedStringToUnsignedChars(DFA74_minS);
    static final char[] DFA74_max = DFA.unpackEncodedStringToUnsignedChars(DFA74_maxS);
    static final short[] DFA74_accept = DFA.unpackEncodedString(DFA74_acceptS);
    static final short[] DFA74_special = DFA.unpackEncodedString(DFA74_specialS);
    static final short[][] DFA74_transition;

    static {
        int numStates = DFA74_transitionS.length;
        DFA74_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA74_transition[i] = DFA.unpackEncodedString(DFA74_transitionS[i]);
        }
    }

    class DFA74 extends DFA {

        public DFA74(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 74;
            this.eot = DFA74_eot;
            this.eof = DFA74_eof;
            this.min = DFA74_min;
            this.max = DFA74_max;
            this.accept = DFA74_accept;
            this.special = DFA74_special;
            this.transition = DFA74_transition;
        }
        public String getDescription() {
            return "3997:1: (this_LiteralExpression_0= ruleLiteralExpression | (otherlv_1= '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | (otherlv_5= '(' this_Expression_6= ruleExpression otherlv_7= ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) otherlv_11= '(' ( ( (lv_children_12_0= ruleExpression ) ) (otherlv_13= ',' ( (lv_children_14_0= ruleExpression ) ) )* )? otherlv_15= ')' ) | ( ( (lv_operator_16_0= 'job' ) ) ( (lv_children_17_0= ruleStatement ) ) ) | ( ( (lv_operator_18_0= 'nameresolver' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'ref' ) ) ( (lv_children_21_0= rulePatternExpression ) ) ) | ( (lv_operator_22_0= 'null' ) ) | ( ( (lv_operator_23_0= 'object' ) ) otherlv_24= '{' ( (lv_children_25_0= ruleArgument ) ) (otherlv_26= ',' ( (lv_children_27_0= ruleArgument ) ) )* otherlv_28= '}' ) | ( ( ( (lv_operator_29_1= 'date' | lv_operator_29_2= 'formatdate' ) ) ) otherlv_30= '(' ( (lv_children_31_0= ruleExpression ) ) (otherlv_32= ',' ( (lv_children_33_0= ruleExpression ) ) )? otherlv_34= ')' ) | ( ( ( ( 'execute' ) )=> (lv_operator_35_0= 'execute' ) ) ( (lv_children_36_0= ruleExpression ) ) (otherlv_37= 'arguments' ( (lv_children_38_0= ruleArgument ) ) (otherlv_39= ',' ( (lv_children_40_0= ruleArgument ) ) )* )? ) )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA74_0 = input.LA(1);

                         
                        int index74_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_INT)||(LA74_0>=106 && LA74_0<=107)) ) {s = 1;}

                        else if ( (LA74_0==87) ) {s = 2;}

                        else if ( (LA74_0==RULE_ID||LA74_0==45||(LA74_0>=97 && LA74_0<=99)) ) {s = 3;}

                        else if ( (LA74_0==18) ) {s = 4;}

                        else if ( (LA74_0==88) ) {s = 5;}

                        else if ( (LA74_0==89) ) {s = 6;}

                        else if ( (LA74_0==90) ) {s = 7;}

                        else if ( (LA74_0==91) ) {s = 8;}

                        else if ( (LA74_0==92) ) {s = 9;}

                        else if ( (LA74_0==93) ) {s = 10;}

                        else if ( ((LA74_0>=94 && LA74_0<=95)) ) {s = 11;}

                        else if ( (LA74_0==96) && (synpred8_InternalDesl())) {s = 12;}

                         
                        input.seek(index74_0);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 74, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    
    private static class FollowSets000 {
        public static final BitSet FOLLOW_ruleProgram_in_entryRuleProgram75 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProgram85 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_BASH_COMMENT_in_ruleProgram122 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleProgram135 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleProgram152 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleProgram169 = new BitSet(new long[]{0x0000000000418002L,0x0000019000000000L});
        public static final BitSet FOLLOW_ruleImportStatement_in_ruleProgram191 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleProgram203 = new BitSet(new long[]{0x0000000000418002L,0x0000019000000000L});
        public static final BitSet FOLLOW_ruleDeclaration_in_ruleProgram226 = new BitSet(new long[]{0x0000000000410002L,0x0000019000000000L});
        public static final BitSet FOLLOW_ruleDeclaration_in_entryRuleDeclaration263 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDeclaration273 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_ruleDeclaration320 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxies_in_ruleDeclaration347 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleConstantDeclaration_in_ruleDeclaration374 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxies_in_entryRuleProxies409 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProxies419 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternMatchInfoProxy_in_ruleProxies466 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocatorProxy_in_ruleProxies493 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTypeProxy_in_ruleProxies520 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleImportStatement_in_entryRuleImportStatement555 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleImportStatement565 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleInclusionDeclaration_in_ruleImportStatement611 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleInclusionDeclaration_in_entryRuleInclusionDeclaration645 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleInclusionDeclaration655 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_15_in_ruleInclusionDeclaration692 = new BitSet(new long[]{0x0000000000000040L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleInclusionDeclaration709 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_entryRulePatternDeclaration750 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternDeclaration760 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_16_in_rulePatternDeclaration797 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_rulePatternDeclaration814 = new BitSet(new long[]{0x0000000000060000L});
        public static final BitSet FOLLOW_17_in_rulePatternDeclaration832 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_rulePatternDeclaration855 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_rulePatternDeclaration869 = new BitSet(new long[]{0x90003002001401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_rulePatternDeclaration891 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_19_in_rulePatternDeclaration904 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_rulePatternDeclaration925 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_20_in_rulePatternDeclaration941 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration962 = new BitSet(new long[]{0x0000000000200002L});
        public static final BitSet FOLLOW_21_in_rulePatternDeclaration975 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration996 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleConstantDeclaration_in_entryRuleConstantDeclaration1034 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleConstantDeclaration1044 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_22_in_ruleConstantDeclaration1081 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleConstantDeclaration1098 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleConstantDeclaration1115 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleConstantDeclaration1136 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleConstantDeclaration1148 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatement_in_entryRuleStatement1184 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleStatement1194 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_ruleStatement1241 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleStatement1269 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleStatement1280 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocateStatement_in_ruleStatement1310 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleStatement1321 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleIfStatement_in_ruleStatement1350 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_ruleStatement1378 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleStatement1389 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLoopStatement_in_ruleStatement1418 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleStatement1445 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLogStatement_in_ruleStatement1473 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleStatement1484 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLogConfigStatement_in_ruleStatement1513 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExecStatement_in_ruleStatement1541 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleStatement1552 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExecStatement_in_entryRuleExecStatement1589 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleExecStatement1599 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_24_in_ruleExecStatement1642 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleExecStatement1676 = new BitSet(new long[]{0x0000000002080002L});
        public static final BitSet FOLLOW_19_in_ruleExecStatement1689 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleExecStatement1710 = new BitSet(new long[]{0x0000000002080002L});
        public static final BitSet FOLLOW_25_in_ruleExecStatement1733 = new BitSet(new long[]{0x000000000C000022L});
        public static final BitSet FOLLOW_ruleExecStatementOption_in_ruleExecStatement1755 = new BitSet(new long[]{0x000000000C000022L});
        public static final BitSet FOLLOW_ruleExecStatementOption_in_entryRuleExecStatementOption1794 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleExecStatementOption1804 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_26_in_ruleExecStatementOption1849 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_27_in_ruleExecStatementOption1878 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleExecStatementOption1906 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleExecStatementOption1926 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleExecStatementOption1947 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLogStatement_in_entryRuleLogStatement1983 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLogStatement1993 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_28_in_ruleLogStatement2045 = new BitSet(new long[]{0x80003002E00401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_29_in_ruleLogStatement2078 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_30_in_ruleLogStatement2107 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_31_in_ruleLogStatement2136 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleLogStatement2174 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleLogStatement2187 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleLogStatement2208 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleLogConfigStatement_in_entryRuleLogConfigStatement2246 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLogConfigStatement2256 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_32_in_ruleLogConfigStatement2299 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_33_in_ruleLogConfigStatement2324 = new BitSet(new long[]{0x90003006000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLogConfigStatement2345 = new BitSet(new long[]{0x90003006000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_34_in_ruleLogConfigStatement2358 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBlockSpecialStatement_in_entryRuleBlockSpecialStatement2394 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBlockSpecialStatement2404 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_35_in_ruleBlockSpecialStatement2458 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_36_in_ruleBlockSpecialStatement2487 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement2539 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleReturnStatement2549 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_37_in_ruleReturnStatement2607 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleReturnStatement2641 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleReturnStatement2653 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_entryRuleEmptyStatement2689 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEmptyStatement2699 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_14_in_ruleEmptyStatement2745 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_entryRuleCompositeStatement2781 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleCompositeStatement2791 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_33_in_ruleCompositeStatement2846 = new BitSet(new long[]{0x0A8033FF110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleCompositeStatement2870 = new BitSet(new long[]{0x0A8033FF110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleReturnStatement_in_ruleCompositeStatement2889 = new BitSet(new long[]{0x0A8033FF110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleBlockSpecialStatement_in_ruleCompositeStatement2908 = new BitSet(new long[]{0x0A8033FF110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_34_in_ruleCompositeStatement2924 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_entryRuleDeclarationStatement2961 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDeclarationStatement2971 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_38_in_ruleDeclarationStatement3008 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleVarEntry_in_ruleDeclarationStatement3029 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleDeclarationStatement3042 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleVarEntry_in_ruleDeclarationStatement3063 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleVarEntry_in_entryRuleVarEntry3101 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleVarEntry3111 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleVarEntry3153 = new BitSet(new long[]{0x0000000000800002L});
        public static final BitSet FOLLOW_23_in_ruleVarEntry3171 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleVarEntry3192 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocateStatement_in_entryRuleLocateStatement3230 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLocateStatement3240 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_39_in_ruleLocateStatement3283 = new BitSet(new long[]{0x0000010000000000L});
        public static final BitSet FOLLOW_40_in_ruleLocateStatement3309 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLocateStatement3330 = new BitSet(new long[]{0x00000E0000000000L});
        public static final BitSet FOLLOW_41_in_ruleLocateStatement3388 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000000L});
        public static final BitSet FOLLOW_rulePOSITION_CONSTANTS_in_ruleLocateStatement3409 = new BitSet(new long[]{0x00000E0000000002L});
        public static final BitSet FOLLOW_42_in_ruleLocateStatement3477 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleLocateStatement3489 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleLocateStatement3510 = new BitSet(new long[]{0x00000E0000000002L});
        public static final BitSet FOLLOW_43_in_ruleLocateStatement3578 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleLocateStatement3601 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleLocateStatement3613 = new BitSet(new long[]{0x90003002001401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLocateStatement3635 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_19_in_ruleLocateStatement3648 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLocateStatement3669 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_20_in_ruleLocateStatement3685 = new BitSet(new long[]{0x00000E0000000002L});
        public static final BitSet FOLLOW_ruleMatchStatement_in_entryRuleMatchStatement3768 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMatchStatement3778 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_44_in_ruleMatchStatement3815 = new BitSet(new long[]{0x4000000000010020L});
        public static final BitSet FOLLOW_rulePatternExpression_in_ruleMatchStatement3836 = new BitSet(new long[]{0x0000200002000002L});
        public static final BitSet FOLLOW_45_in_ruleMatchStatement3857 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleMatchStatement3879 = new BitSet(new long[]{0x0000000002080002L});
        public static final BitSet FOLLOW_19_in_ruleMatchStatement3892 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleMatchStatement3913 = new BitSet(new long[]{0x0000000002080002L});
        public static final BitSet FOLLOW_25_in_ruleMatchStatement3938 = new BitSet(new long[]{0x007FC00000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_ruleMatchStatement3960 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleMatchStatement3973 = new BitSet(new long[]{0x007FC00000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_ruleMatchStatement3994 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleMatchOption_in_entryRuleMatchOption4034 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMatchOption4044 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_46_in_ruleMatchOption4089 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_47_in_ruleMatchOption4118 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_48_in_ruleMatchOption4147 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_49_in_ruleMatchOption4176 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_50_in_ruleMatchOption4205 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_51_in_ruleMatchOption4234 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_52_in_ruleMatchOption4263 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_53_in_ruleMatchOption4292 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_54_in_ruleMatchOption4321 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleMatchOption4349 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleMatchOption4370 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleIfStatement_in_entryRuleIfStatement4406 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleIfStatement4416 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_55_in_ruleIfStatement4453 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleIfStatement4465 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleIfStatement4486 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleIfStatement4498 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleIfStatement4519 = new BitSet(new long[]{0x0100000000000002L});
        public static final BitSet FOLLOW_56_in_ruleIfStatement4540 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleIfStatement4562 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLoopStatement_in_entryRuleLoopStatement4600 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLoopStatement4610 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForStatement_in_ruleLoopStatement4657 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForEachStatement_in_ruleLoopStatement4684 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleWhileStatement_in_ruleLoopStatement4711 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForStatement_in_entryRuleForStatement4746 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForStatement4756 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_41_in_ruleForStatement4799 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleForStatement4824 = new BitSet(new long[]{0x00002040000441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleForInitStatement_in_ruleForStatement4845 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleForStatement4857 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleForStatement4878 = new BitSet(new long[]{0x0000000000004000L});
        public static final BitSet FOLLOW_14_in_ruleForStatement4890 = new BitSet(new long[]{0x00002040000441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleForPostStatement_in_ruleForStatement4911 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleForStatement4923 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleForStatement4944 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForEachStatement_in_entryRuleForEachStatement4980 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForEachStatement4990 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_57_in_ruleForEachStatement5033 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleForEachStatement5058 = new BitSet(new long[]{0x0000004000000000L});
        public static final BitSet FOLLOW_38_in_ruleForEachStatement5070 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleForEachStatement5087 = new BitSet(new long[]{0x0400000000000000L});
        public static final BitSet FOLLOW_58_in_ruleForEachStatement5104 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleForEachStatement5125 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleForEachStatement5137 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleForEachStatement5158 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleWhileStatement_in_entryRuleWhileStatement5194 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleWhileStatement5204 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_59_in_ruleWhileStatement5247 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleWhileStatement5272 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleWhileStatement5293 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleWhileStatement5305 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleWhileStatement5326 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForInitStatement_in_entryRuleForInitStatement5362 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForInitStatement5372 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement5421 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForInitStatement5440 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleForInitStatement5456 = new BitSet(new long[]{0x00002040000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement5479 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForInitStatement5498 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleForInitStatement5531 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForPostStatement_in_entryRuleForPostStatement5567 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForPostStatement5577 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForPostStatement5624 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleForPostStatement5637 = new BitSet(new long[]{0x00002040000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForPostStatement5658 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleForPostStatement5688 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_entryRuleAssignStatement5724 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleAssignStatement5734 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleAssignStatement5781 = new BitSet(new long[]{0x0000000000800002L});
        public static final BitSet FOLLOW_23_in_ruleAssignStatement5808 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleAssignStatement5842 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArgument_in_entryRuleArgument5880 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleArgument5890 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleArgument5956 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleArgument5968 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleArgument5992 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_60_in_ruleArgument6011 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_33_in_ruleArgument6023 = new BitSet(new long[]{0x90003006000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleArgument6045 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_19_in_ruleArgument6058 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleArgument6079 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_34_in_ruleArgument6095 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression6133 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleExpression6143 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTernaryExpression_in_ruleExpression6190 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArrayExpression_in_ruleExpression6217 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatementExpression_in_ruleExpression6244 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTernaryExpression_in_entryRuleTernaryExpression6279 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleTernaryExpression6289 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_ruleTernaryExpression6336 = new BitSet(new long[]{0x2000000000000002L});
        public static final BitSet FOLLOW_61_in_ruleTernaryExpression6363 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleTernaryExpression6397 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleTernaryExpression6409 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleTernaryExpression6430 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_entryRuleSimpleExpression6468 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSimpleExpression6478 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleSimpleExpression6526 = new BitSet(new long[]{0x0000000000800002L});
        public static final BitSet FOLLOW_23_in_ruleSimpleExpression6553 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleExpression6587 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMatchStatement_in_ruleSimpleExpression6618 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArrayExpression_in_entryRuleArrayExpression6653 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleArrayExpression6663 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_33_in_ruleArrayExpression6715 = new BitSet(new long[]{0x80003006000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleArrayExpression6750 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_19_in_ruleArrayExpression6763 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleArrayExpression6784 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_34_in_ruleArrayExpression6800 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternExpression_in_entryRulePatternExpression6836 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternExpression6846 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_rulePatternExpression6892 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_rulePatternExpression6921 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_62_in_rulePatternExpression6946 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_rulePatternExpression6971 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_rulePatternExpression6992 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_rulePatternExpression7004 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatementExpression_in_entryRuleStatementExpression7041 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleStatementExpression7051 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_63_in_ruleStatementExpression7097 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_ruleStatementExpression7118 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression7154 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanExpression7164 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression7211 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
        public static final BitSet FOLLOW_64_in_ruleBooleanExpression7240 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_65_in_ruleBooleanExpression7269 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression7306 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_entryRuleBooleanTerm7344 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanTerm7354 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm7401 = new BitSet(new long[]{0x0000000000000002L,0x00000000000000FCL});
        public static final BitSet FOLLOW_66_in_ruleBooleanTerm7430 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_67_in_ruleBooleanTerm7459 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_68_in_ruleBooleanTerm7488 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_69_in_ruleBooleanTerm7517 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_70_in_ruleBooleanTerm7546 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_71_in_ruleBooleanTerm7575 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm7612 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_entryRuleAdditionExpression7650 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleAdditionExpression7660 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMulExpression_in_ruleAdditionExpression7707 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000F00L});
        public static final BitSet FOLLOW_72_in_ruleAdditionExpression7736 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_73_in_ruleAdditionExpression7765 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_74_in_ruleAdditionExpression7794 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_75_in_ruleAdditionExpression7823 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleMulExpression_in_ruleAdditionExpression7860 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000F00L});
        public static final BitSet FOLLOW_ruleMulExpression_in_entryRuleMulExpression7898 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMulExpression7908 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleMulExpression7955 = new BitSet(new long[]{0x0000000000000002L,0x000000000001F000L});
        public static final BitSet FOLLOW_76_in_ruleMulExpression7984 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_77_in_ruleMulExpression8013 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_78_in_ruleMulExpression8042 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_79_in_ruleMulExpression8071 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_80_in_ruleMulExpression8100 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleMulExpression8137 = new BitSet(new long[]{0x0000000000000002L,0x000000000001F000L});
        public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm8175 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleTerm8185 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_81_in_ruleTerm8238 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleTerm8272 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleComplexTerm_in_ruleTerm8302 = new BitSet(new long[]{0x0000000000000002L,0x00000000000C0000L});
        public static final BitSet FOLLOW_82_in_ruleTerm8331 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_83_in_ruleTerm8360 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleTerm8397 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleComplexTerm_in_entryRuleComplexTerm8436 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleComplexTerm8446 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_ruleComplexTerm8493 = new BitSet(new long[]{0x0000000000040002L,0x0000000000300000L});
        public static final BitSet FOLLOW_84_in_ruleComplexTerm8521 = new BitSet(new long[]{0x00002000000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_ruleComplexTerm8555 = new BitSet(new long[]{0x0000000000040002L,0x0000000000300000L});
        public static final BitSet FOLLOW_18_in_ruleComplexTerm8590 = new BitSet(new long[]{0x80003002001401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm8625 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_19_in_ruleComplexTerm8638 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm8659 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_20_in_ruleComplexTerm8675 = new BitSet(new long[]{0x0000000000040002L,0x0000000000300000L});
        public static final BitSet FOLLOW_85_in_ruleComplexTerm8710 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm8744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
        public static final BitSet FOLLOW_86_in_ruleComplexTerm8756 = new BitSet(new long[]{0x0000000000040002L,0x0000000000300000L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_entryRuleSimpleTerm8795 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSimpleTerm8805 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLiteralExpression_in_ruleSimpleTerm8852 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_87_in_ruleSimpleTerm8870 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleSimpleTerm8902 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleVariableTerm_in_ruleSimpleTerm8931 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_18_in_ruleSimpleTerm8949 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm8971 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleSimpleTerm8982 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_88_in_ruleSimpleTerm9017 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleSimpleTerm9053 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleSimpleTerm9065 = new BitSet(new long[]{0x80003002001401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm9087 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm9100 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm9121 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_20_in_ruleSimpleTerm9137 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_89_in_ruleSimpleTerm9163 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleSimpleTerm9197 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_90_in_ruleSimpleTerm9223 = new BitSet(new long[]{0x0A8033C3110441E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleSimpleTerm9257 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_91_in_ruleSimpleTerm9283 = new BitSet(new long[]{0x4000000000010020L});
        public static final BitSet FOLLOW_rulePatternExpression_in_ruleSimpleTerm9317 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_92_in_ruleSimpleTerm9342 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_93_in_ruleSimpleTerm9380 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_33_in_ruleSimpleTerm9405 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleSimpleTerm9426 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm9439 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleSimpleTerm9460 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_34_in_ruleSimpleTerm9474 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_94_in_ruleSimpleTerm9502 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_95_in_ruleSimpleTerm9531 = new BitSet(new long[]{0x0000000000040000L});
        public static final BitSet FOLLOW_18_in_ruleSimpleTerm9559 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm9580 = new BitSet(new long[]{0x0000000000180000L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm9593 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm9614 = new BitSet(new long[]{0x0000000000100000L});
        public static final BitSet FOLLOW_20_in_ruleSimpleTerm9628 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_96_in_ruleSimpleTerm9669 = new BitSet(new long[]{0x80003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm9703 = new BitSet(new long[]{0x0000200000000002L});
        public static final BitSet FOLLOW_45_in_ruleSimpleTerm9716 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleSimpleTerm9737 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm9750 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleSimpleTerm9771 = new BitSet(new long[]{0x0000000000080002L});
        public static final BitSet FOLLOW_ruleVariableTerm_in_entryRuleVariableTerm9812 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleVariableTerm9822 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleVariableTerm9865 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_97_in_ruleVariableTerm9886 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_98_in_ruleVariableTerm9915 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_99_in_ruleVariableTerm9944 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_45_in_ruleVariableTerm9973 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLiteralExpression_in_entryRuleLiteralExpression10024 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLiteralExpression10034 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleLiteralExpression10076 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_VERBATIM_STRING_in_ruleLiteralExpression10104 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_INT_in_ruleLiteralExpression10132 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBOOLEAN_CONSTANTS_in_ruleLiteralExpression10164 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternMatchInfoProxy_in_entryRulePatternMatchInfoProxy10200 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternMatchInfoProxy10210 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_100_in_rulePatternMatchInfoProxy10247 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_rulePatternMatchInfoProxy10264 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
        public static final BitSet FOLLOW_101_in_rulePatternMatchInfoProxy10281 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy10302 = new BitSet(new long[]{0x0000200000000002L,0x0000004000000000L});
        public static final BitSet FOLLOW_102_in_rulePatternMatchInfoProxy10315 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy10336 = new BitSet(new long[]{0x0000200000000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_rulePatternMatchInfoProxy10359 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocatorProxy_in_entryRuleLocatorProxy10396 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLocatorProxy10406 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_103_in_ruleLocatorProxy10443 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleLocatorProxy10460 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
        public static final BitSet FOLLOW_101_in_ruleLocatorProxy10477 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy10498 = new BitSet(new long[]{0x0000200000000002L,0x0000004000000000L});
        public static final BitSet FOLLOW_102_in_ruleLocatorProxy10511 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy10532 = new BitSet(new long[]{0x0000200000000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_ruleLocatorProxy10555 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTypeProxy_in_entryRuleTypeProxy10592 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleTypeProxy10602 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_104_in_ruleTypeProxy10639 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleTypeProxy10656 = new BitSet(new long[]{0x0000000000800000L});
        public static final BitSet FOLLOW_23_in_ruleTypeProxy10673 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy10694 = new BitSet(new long[]{0x0000200000000002L,0x0000004000000000L});
        public static final BitSet FOLLOW_102_in_ruleTypeProxy10707 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy10728 = new BitSet(new long[]{0x0000200000000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_ruleTypeProxy10751 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_entryRuleProxyArgument10788 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProxyArgument10798 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_45_in_ruleProxyArgument10844 = new BitSet(new long[]{0x0000000200000000L});
        public static final BitSet FOLLOW_33_in_ruleProxyArgument10856 = new BitSet(new long[]{0x90003006000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleProxyArgument10878 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_19_in_ruleProxyArgument10891 = new BitSet(new long[]{0x90003002000401E0L,0x00000C0FFF820000L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleProxyArgument10912 = new BitSet(new long[]{0x0000000400080000L});
        public static final BitSet FOLLOW_34_in_ruleProxyArgument10928 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_entryRuleQualifiedID10965 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedID10976 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedID11016 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
        public static final BitSet FOLLOW_105_in_ruleQualifiedID11035 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedID11050 = new BitSet(new long[]{0x0000000000000002L,0x0000020000000000L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_entryRuleDotQualifiedID11098 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDotQualifiedID11109 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedID11149 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
        public static final BitSet FOLLOW_84_in_ruleDotQualifiedID11168 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedID11183 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
        public static final BitSet FOLLOW_ruleBOOLEAN_CONSTANTS_in_entryRuleBOOLEAN_CONSTANTS11231 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBOOLEAN_CONSTANTS11242 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_106_in_ruleBOOLEAN_CONSTANTS11280 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_107_in_ruleBOOLEAN_CONSTANTS11299 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePOSITION_CONSTANTS_in_entryRulePOSITION_CONSTANTS11340 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePOSITION_CONSTANTS11351 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_98_in_rulePOSITION_CONSTANTS11389 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_99_in_rulePOSITION_CONSTANTS11408 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_25_in_synpred1_InternalDesl1725 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_45_in_synpred4_InternalDesl3849 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_25_in_synpred5_InternalDesl3930 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_56_in_synpred6_InternalDesl4532 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_synpred7_InternalDesl5939 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_96_in_synpred8_InternalDesl9651 = new BitSet(new long[]{0x0000000000000002L});
    }


}